Ruby RSpec—lambda用法
有人能给我解释一下以下方法的区别吗Ruby RSpec—lambda用法,ruby,ruby-on-rails-3,lambda,rspec,Ruby,Ruby On Rails 3,Lambda,Rspec,有人能给我解释一下以下方法的区别吗 it "should create a user" do lambda do post :create, :user => @attr end.should change(User, :count).by(1) end 这就是目前的方法。这也可以通过以下方法实现吗 it "should create a user" do post :create, :user => @attr response.s
it "should create a user" do
lambda do
post :create, :user => @attr
end.should change(User, :count).by(1)
end
这就是目前的方法。这也可以通过以下方法实现吗
it "should create a user" do
post :create, :user => @attr
response.should change(User, :count).by(1)
end
这些实际上是相同的吗?或者第二种方法不起作用?因为我下面的教程似乎尽可能使用
response
,但在上述情况下没有这样做。有人能解释一下上述两种方法的区别吗?lambda和RSpec的响应是如何工作的?谢谢 如果测试数据库为空,lambda表单相当于执行此操作:
User.count.should == 0
post :create, :user => @attr
User.count.should == 1
我相信调用change
而不提供块(如第二个示例所示)将生成错误
lambda表单用于包装一段代码,该代码可用于以更方便的方式设置期望值,然后使用before和after条件进行测试。在RSpec的最新版本中,您还可以看到使用expect
:
expect {
post :create, :user => @attr
}.to change(User, :count).by(1)
lambda方法表示总体操作将用户数更改为+1,其中第二种方法表示响应将用户数更改为+1。