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
我想我应该加上这个,因为我花了很多时间来解决这个问题,而上面的解决方案对我不起作用……可能会节省一些时间:)