如何在Java中模拟Stripe网络调用以进行测试

时间:2019-01-17 23:54:11

标签: java junit mockito stripe-payments

我正在尝试测试正在执行Stripe api调用Plan.retrieve("my_plan_id")的函数。我正在使用junit作为测试库,并使用模仿对象作为我的模仿库。这里的问题是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密钥。

模拟Stripe api调用以在Java中进行测试的正确实现是什么?我似乎找不到任何信息。

更新

我已经知道PowerMock,我正在寻找涉及使用Mockito的解决方案。 Dawood ibn Kareem几乎回答了我的问题。如果我可以将其标记为可接受的答案,那我会的。我承认这是一个很明显的答案,但是由于某种原因我才没有想到。

我也不明白为什么人们会拒绝我的问题,这是一个不好的问题吗?

1 个答案:

答案 0 :(得分:0)

Mockito不支持模拟静态方法,可以使用PowerMock来完成任务。具体来说,您应该查看:https://github.com/powermock/powermock/wiki/Mockito#mocking-static-method

此线程已回答类似的问题:Mocking static methods with Mockito