gpt4 book ai didi

ruby-on-rails - 在 RSpec 中,你如何导致期望停止执行?

转载 作者:行者123 更新时间:2023-12-04 17:57:25 26 4
gpt4 key购买 nike

我想测试一个类在 RSpec 中接收类方法调用:

describe MyObject do
it "should create a new user" do
expect(User).to receive(:new)
MyObject.new.doit
end
end

class MyObject
def doit
u = User.new
u.save
end
end

问题在于期望不会停止执行。它只是将类方法 stub .doit 并继续执行。

期望的作用是确保User.new 返回nil。因此,当我们到达下一行 User.save 时,它会失败,因为没有用户对象可以调用 .save

我希望在满足 RSpec 期望后立即停止执行 - 我该怎么做?

注意

这只是一个说明性示例 - 虽然 expect to change 对 User.new 有效,但我需要测试的不是这个实际代码

最佳答案

这个有一个很好的方法and_call_original :

expect(User).to receive(:new).and_call_original

关于ruby-on-rails - 在 RSpec 中,你如何导致期望停止执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39237936/

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