带有FakeApplication的Http.Context和虚幻的模拟方法

时间:2014-04-24 10:27:33

标签: unit-testing playframework playframework-2.0 mocking

在我的测试中,我为每个测试方法创建一个假应用程序:

@Before
public void startFakeApplication() {
    this.fakeApplication = fakeApplication();
    start(this.fakeApplication);
}

@After
public void killFakeApplication() {
    stop(this.fakeApplication);
    this.fakeApplication = null;
}

某些测试使用检查请求是否安全的功能:

public boolean isHttps() {
    Http.Request req = Controller.request();
    return req.getHeader("x-forwarded-proto") != null
            && req.getHeader("x-forwarded-proto").contains("https");
}

说不出来:

  

此处没有可用的HTTP上下文

这很奇怪,因为它在假冒的应用程序上运行,为什么它不知道并创建虚假请求?
好吧,我发现了这个:Play framework 2.2.1: Create Http.Context for tests向我介绍了嘲弄的方法,所以我急于试一试并尝试以同样的方式嘲笑Http.Context,问题是我可以&似乎找不到mock方法...

在该帖子中,他使用的是import static org.mockito.Mockito.*(我假设mock方法所在的位置),但我没有这个包,仅org.mockito有一个名为internal的子包,我在那里找不到任何mock方法。

在Play的官方文档中!唯一谈论它的地方是Scala Test部分,他们使用:import org.specs2.mock._但我也无法找到此mock方法。

我使用的是Play 2.2.2(java) 有任何想法吗?感谢。

2 个答案:

答案 0 :(得分:1)

我解决了同样的问题,将我的build.sbt添加到Mockito的库依赖项中:

libraryDependencies += "org.mockito" % "mockito-core" % "1.10.19"

然后我运行play compileplay eclipse,并且在Eclipse中刷新整个项目之后神奇地模拟了mockito库。

是的,mock()org.mockito.Mockito的一种方法。

答案 1 :(得分:0)

我有同样的问题,Play没有找到模拟功能,最终意识到我没有用Mockito扩展我的测试类;

import org.specs2.mock._

class TestClass extends Specification with Mockito

以为我会添加这个,因为它花了我很多时间来解决,上面的解决方案对我不起作用......可能会节省一些时间:)