gpt4 book ai didi

ruby-on-rails - 模拟外部 API

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:07 25 4
gpt4 key购买 nike

我是测试策略和模拟的新手,而且我很难弄清楚如何模拟对外部服务的调用。我敢肯定我错过了一些简单的事情,我只是不知道到底是什么。

我正在使用 Braintree gem 通过 Braintree 网关对订阅服务收费,我想在我的 UserController 的创建方法中模拟客户创建方法和订阅创建方法。

Customer.create 方法看起来像这样:

  result = Braintree::Customer.create(
:first_name => @creditcard.first_name,
:last_name => @creditcard.last_name,
:email => @user.email
:credit_card => {
...
}
}
)

这将返回一个 Braintree::Successful 结果对象,具有处理结果的属性。

我想我必须做类似的事情:

Braintree::Customer.expects(:create).returns(...)

但是返回区会发生什么?我是否需要使用伪造的处理结果的属性创建自己的模拟 Successful 对象,还是有更简单的方法来完成所有这些?

感谢您提供的任何帮助。

最佳答案

您可以返回评论中建议的 OpenStructstubmock,恕我直言,这对测试来说更好,更有用,因为你可以很容易地设定期望,就像这样:

Braintree::Customer.expects(:create).returns(mock(:save => true))

返回的 mock 将期待 save 消息(在这种情况下这可能没有意义,但应该让您明白)。

关于ruby-on-rails - 模拟外部 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3401199/

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