@attr -6ren">
gpt4 book ai didi

ruby - RSpec -- lambda 用法

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:37 25 4
gpt4 key购买 nike

有人可以向我解释以下方法之间的区别吗?

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

我相信,如您在第二个示例中所示,在不提供 block 的情况下调用 change 会产生错误。

lambda 形式用于包装一段代码,可用于以更方便的方式设置期望,然后使用前后条件进行测试。在 RSpec 的更新版本中,您还会看到使用 expect 完成此操作:

expect {
post :create, :user => @attr
}.to change(User, :count).by(1)

关于ruby - RSpec -- lambda 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com