Unit testing 带有FakeApplication和illusive mock方法的Http.Context

Unit testing 带有FakeApplication和illusive mock方法的Http.Context,unit-testing,playframework,playframework-2.0,mocking,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.fakeApplicati

在我的测试中,我根据测试方法创建了一个假应用程序:

@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上下文

这很奇怪,因为它运行在一个假的应用程序上,为什么它不能知道这一点并创建一个假的请求?
哦,我发现了这个:它向我介绍了模拟方法,所以我很想尝试一下,并尝试以同样的方式模拟
Http.Context
,问题是我似乎找不到
mock
方法

在那个线程中,他使用的是
import static org.mockito.mockito.
(我假设
mock
方法就在这里),但我没有那个包,
org.mockito
只有一个子包名为
internal
,我在那里找不到任何
mock
方法

在官方文件中播放!唯一讨论它的地方是他们使用的部分:
import org.specs2.mock.\u
但是在那里我也找不到这个
mock
方法

我正在使用Play2.2.2(java)。

有什么想法吗?谢谢。

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

libraryDependencies += "org.mockito" % "mockito-core" % "1.10.19"
然后我运行
play compile
play eclipse
,神奇地在eclipse中刷新整个项目后,mockito库变得可用


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

我也遇到了同样的问题,Play没有定位mock函数,最终意识到我没有用Mockito扩展我的测试类

import org.specs2.mock._

class TestClass extends Specification with Mockito
我想我应该加上这个,因为我花了很多时间来解决这个问题,而上面的解决方案对我不起作用……可能会节省一些时间:)