如何解决如何模拟或存根外部请求,不一定是 http 请求?
我想模拟或存根外部请求。这不是一个简单的 HTTP 请求,没有直接访问底层库的信息,也没有关于它是如何实现的信息,因此它应该被视为一些外部请求,可以是 http、文件、数据库。简化代码如下:
def my_external_call
Lib1::get_some_data()
end
我知道 my_external_call() 可以返回什么。我如何模拟或存根?
解决方法
我会做这样的事情:
describe "method that uses external service" do
before do
allow(Lib1).to_receive(:get_some_data).and_return(
{ example: "response" } # or whatever is returned from the external service
)
end
it "works" do
# your test for the method that triggers the external call
end
end
,
另外,请阅读 Martin Fowler 的这篇非常著名的文章:Mocks aren't Stubs 以便您更好地理解模拟和存根。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。