RSpec文档展示了如何模拟类方法。如何替换实例方法。下面是一个使用rspec-mocks使其更加具体的代码示例:
require 'rspec'
class Foo
def foo
"foo"
end
def foobar
foo + "bar"
end
end
RSpec.describe "Foo" do
it "mocks foo" do
allow(Foo).to receive(:foo).and_return("bar")
foo = Foo.new
expect(foo.foobar).to eq("barbar")
end
end这给出了"Foo不实现: foo“。当然,这是为简化而设计的。在我测试的实际类中,foo发出一个HTTP请求,所以我想在为foobar编写规范时模拟它。我想用rspec-mocks来做这件事,但是如果另一个创业板能帮上忙的话,我也对此持开放态度。
发布于 2022-03-02 23:23:55
只需将方法存根到实例上,而不是类:
RSpec.describe "Foo" do
it "mocks foo" do
foo = Foo.new
allow(foo).to receive(:foo).and_return("bar")
expect(foo.foobar).to eq("barbar")
end
endhttps://stackoverflow.com/questions/71330216
复制相似问题