【发布时间】:2019-11-19 07:08:57
【问题描述】:
我有一个类接收Option[Request[_]] 作为隐式(play.api.mvc.Request):
class MyClass @Inject()(...)(implicit val request: Option[Request[_]]) { ...
我的问题是在我使用 play.api.test.inject 的测试中,例如:
val myClass: MyClass = inject[MyClass]
为了能够在我的测试中做到这一点,我必须隐含这个请求。所以我的做法是像这样使用mockito.ArgumentMatchers:
implicit val origReq: Option[Request[_]] = any[Option[Request[_]]]
但是当我运行测试时,我得到了这个错误:
An exception or error caused a run to abort: Guice configuration errors:
1) No implementation for scala.Option<play.api.mvc.Request<?>> was bound.
while locating scala.Option<play.api.mvc.Request<?>>
for the 3rd parameter of streams.MyClass.<init>(MyClass.scala:16)
while locating streams.MyClass
1 error
com.google.inject.ConfigurationException: Guice configuration errors:
1) No implementation for scala.Option<play.api.mvc.Request<?>> was bound.
while locating scala.Option<play.api.mvc.Request<?>>
for the 3rd parameter of streams.MyClass.<init>(MyClass.scala:16)
while locating streams.MyClass
我做错了什么? :/
【问题讨论】:
-
也许
Option[any[Request[_]]]??? -
@MikhailIonkin 尝试了
implicit val origReq: Option[Request[_]] = Some(ArgumentMatchers.any[Request[_]])不幸的是仍然无法正常工作 -
同样的异常?
-
@MikhailIonkin 是的,让我抓狂..
-
你能得到 val without 选项吗?并且在您可以创建将包装它的隐式 val 之后。我认为这个问题是 mokito 不能有 Option 的所有类型的实现
标签: scala playframework mockito playframework-2.0 playframework-2.3