我正在尝试测试正在执行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几乎回答了我的问题。如果我可以将其标记为可接受的答案,那我会的。我承认这是一个很明显的答案,但是由于某种原因我才没有想到。
我也不明白为什么人们会拒绝我的问题,这是一个不好的问题吗?
答案 0 :(得分:0)
Mockito不支持模拟静态方法,可以使用PowerMock来完成任务。具体来说,您应该查看:https://github.com/powermock/powermock/wiki/Mockito#mocking-static-method
此线程已回答类似的问题:Mocking static methods with Mockito