在我的测试中,我为每个测试方法创建一个假应用程序:
@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) 有任何想法吗?感谢。
答案 0 :(得分:1)
我解决了同样的问题,将我的build.sbt
添加到Mockito的库依赖项中:
libraryDependencies += "org.mockito" % "mockito-core" % "1.10.19"
然后我运行play compile
和play eclipse
,并且在Eclipse中刷新整个项目之后神奇地模拟了mockito库。
是的,mock()
是org.mockito.Mockito
的一种方法。
答案 1 :(得分:0)
我有同样的问题,Play没有找到模拟功能,最终意识到我没有用Mockito扩展我的测试类;
import org.specs2.mock._
class TestClass extends Specification with Mockito
以为我会添加这个,因为它花了我很多时间来解决,上面的解决方案对我不起作用......可能会节省一些时间:)