【发布时间】:2021-01-05 10:44:28
【问题描述】:
我正在使用 micronaut 框架和 spock 来编写 API 测试用例。
我正在尝试创建我的 API 的测试用例,它在内部调用第三方 api 的 PaymentIntent.retrieve() 静态方法。
我想模拟这个第 3 方 url 调用并返回一个 PaymentIntent 的 fakeObject。
这是我创建的一个示例测试用例,它正在执行实际的 3rd 方 api 静态方法:
@Inject Service myService;
@Unroll
void "method returns nothing"() {
given:
PaymentIntent paymentIntent = new PaymentIntent()
Mock(PaymentIntent)
PaymentIntent.retrieve("pi_123", requestOptions) >> paymentIntent
when:
def result = myService.getPayment("", "pi_123", obj)
then:
result.amount == paymentIntent.amount
}
有人可以指导我如何限制实际 API 的执行吗?
我已经参考了这些已经提出的问题,但在我的情况下它不起作用。 Mock static method with GroovyMock or similar in Spock
【问题讨论】:
-
欢迎来到 SO。请注意了解MCVE 是什么以及它如何帮助您获得所需的答案。一个测试 sn-p,甚至不是一个完整的课程,再加上你没有提供被测课程的事实,这使得你很难回答你的问题,这就是为什么 Jeff 在他的回答中不得不推测。这个假设你的测试类是用 Groovy 编写的,这可能是对的,也可能是错的,这取决于他的答案是否对你有用。
标签: unit-testing groovy stripe-payments spock micronaut