Bra*_*ice 4 controller rspec ruby-on-rails assign
我正试图掌握测试控制器的问题,到目前为止,我似乎仍然坚持最简单的问题.
documents.controller:
def edit
@document = Document.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)
documents_controller_spec:
describe 'GET #edit', focus: true do
before(:each) { @doc = FactoryGirl.create(:document)}
it "should assign @document to the document" do
get :edit, id: @doc
assigns(:document).should eq(@doc)
end
end
Run Code Online (Sandbox Code Playgroud)
始终返回false.@document总是分配为nil.我已经尝试将params [id]指定为@ doc.id,但这并没有解决任何问题.我在这做错了什么?
小智 5
从rspec的角度来看,您在行中比较的两个文档(分配给@doc):
assigns(:document).should eq(@doc)
Run Code Online (Sandbox Code Playgroud)
不一样 - 它们在数据库中具有相同的ID,但是您比较的实际ruby对象是不同的,因为一个是在'before'块中创建的,而另一个可能是在GET请求执行时在控制器内实例化的在你的测试中.
我的猜测是以下工作:
assigns(:document).id.should eq(@doc.id)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |