0

在基于 Play 的应用程序中!框架(2.0,Java)我想在测试控制器时模拟第三方 API。我为此选择了 Mockito,因为我在 Play 中找不到任何内置的模拟功能!

我有这样的事情:

@Test
public void someTest() {
  ThirdParty thirdParty = mock(ThirdParty.class);
  when(thirdParty.someUnwantedMethod()).thenReturn("foo");

  running(fakeApplication(), new Runnable() {
    public void run() {
      Result result = callAction(controllers.routes.ref.MyController.doImportantStuff());
      verify(thirdParty.someUnwantedMethod()); // Verify that method in mock/API is called
      assertThat(contentAsString(result)).contains("foo");
    }
  });
}

(控制器依次在 ThirdParty 类的实例上调用“someUnwantedMethod()”,在测试时应该使用模拟)

如何让我的控制器拿起模拟?

4

1 回答 1

1
  1. 在 MyController 中引入静态 setThirdParty 方法
  2. 在您的测试中,在“callAction”之前,调用 MyController.setThirdParty(thirdParty)

没有什么具体的游戏

于 2012-10-11T09:23:35.147 回答