在Play控制器中模拟第三方API

时间:2012-10-11 06:32:18

标签: testing playframework-2.0 mockito

在基于Play的应用中! Framework(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()”,在测试时应该使用mock)

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

1 个答案:

答案 0 :(得分:1)

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

    没有特定于游戏的内容