Kva*_*ass 7 ruby lambda rspec ruby-on-rails-3
有人可以向我解释以下方法之间的区别吗?
it "should create a user" do
lambda do
post :create, :user => @attr
end.should change(User, :count).by(1)
end
Run Code Online (Sandbox Code Playgroud)
这就是目前的方法.这可以通过以下方法实现吗?
it "should create a user" do
post :create, :user => @attr
response.should change(User, :count).by(1)
end
Run Code Online (Sandbox Code Playgroud)
这些有效吗?或者第二个不起作用?因为我正在遵循的教程似乎尽可能使用response,但在上述情况下没有这样做.有人可以解释上述两种方法之间的区别,lambda和RSpec的响应如何工作?谢谢!
zet*_*tic 10
如果测试数据库为空,则lambda表单相当于执行此操作:
User.count.should == 0
post :create, :user => @attr
User.count.should == 1
Run Code Online (Sandbox Code Playgroud)
我相信change,如第二个示例中所示,在不提供块的情况下调用将生成错误.
lambda表单用于包装一段代码,可用于以更方便的方式设置期望,然后使用之前和之后的条件进行测试.在更新版本的RSpec中,您还可以看到以下内容expect:
expect {
post :create, :user => @attr
}.to change(User, :count).by(1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5600 次 |
| 最近记录: |