测试 [rspec] controller spec 的一个 example 里前后两个 request, 后者使用了前者的 params

snowhs · January 30, 2013 · Last by snowhs replied at February 05, 2013 · 2339 hits

设我们有

# app/controllers/posts_controller.rb
class PostsController
  def create
  end

  def index
  end
end

# spec/controllers/posts_controller_spec.rb
describe PostsController do
  describe :index do
    before do
      post :create content: 'Lorem lipsm'
      get :index
    end

    expect(respond).to be_success
  end
end

若观察 log/test.rb, 会发现 GET posts#index的参数里有POST posts#create时的content, 原因是什么呢?

为什么要先 post :create 呢?直接 create 不就行了?

#3 楼 @snowhs 这一种是 request/integration 的时候测的吧,controller test 跟 unit test 一样,都是特定的上下文环境,这样才可以排除其他因素的影响,确保一个 action/method 的正确。

另外

post :create content: 'Lorem lipsm'

不是少了个,吗

You need to Sign in before reply, if you don't have an account, please Sign up first.