java - 如何模拟 Stripe 网络调用以在 Java 中进行测试
问题描述
我正在尝试测试一个进行 Stripe api 调用的函数Plan.retrieve("my_plan_id")
。我使用 junit 作为我的测试库和 mockito 作为我的模拟库。这里的问题是这Plan.retrieve()
是一个静态方法,而 mockito 不支持模拟静态方法。
我试过Plan
像这样嘲笑这个班级。
Plan plan = new Plan();
plan.setId("my_plan_id");
Plan mockedPlan = mock(Plan.class);
when(mockedPlan.retrieve("my_plan_id")).thenReturn(plan);
assertEquals(plan.getId(), myTestedFunction().getId());
这只会导致 Stripe 身份验证异常,因为我从未给 Stripe 提供 API 密钥。
在 java 中模拟 Stripe api 调用以进行测试的正确实现是什么?我似乎找不到任何关于此的信息。
更新
我已经知道 PowerMock,我正在寻找涉及使用 Mockito 的解决方案。Dawood ibn Kareem 几乎回答了我的问题。如果我可以将其标记为已接受的答案,我会的。我承认这是一个非常明显的答案,但由于某种原因,我没有想到。
我也不明白为什么人们不赞成我的问题,这是一个坏问题吗?
解决方案
Mockito 不支持 mocking 静态方法,你可以使用 PowerMock 来实现任务。具体来说,您应该查看:https ://github.com/powermock/powermock/wiki/Mockito#mocking-static-method
在这个线程中已经回答了一个类似的问题:Mocking static methods with Mockito
推荐阅读
- mysql - 列名或提供的值的数量与表定义不匹配。多次查看我的代码。我该怎么办?
- erlang - Elixir / Erlang中字符串的长度和大小需要解释
- java - 将 MimeMessage 附加到另一个 MimeMessage
- c# - 从数据库读取时的 OpenXML SAX 方法?
- r - R-C50:C5.0Control 中 minCases 的定义
- python - 如何使用带有元组的 itertool 将关节移动到不同的位置?
- shell - 使用程序名称文件作为输入获取文件的前 5 行(Unix)
- azure - 在 Function App 中连接依赖注入时获取配置
- php - 如何使用 AdSense API 向网站用户显示保存的报告?
- android - Android:如何为 EditText 指定 2 种样式?