Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mockito scala验证无法使用scalatestplus播放_Scala_Playframework_Mockito_Scalatest - Fatal编程技术网

Mockito scala验证无法使用scalatestplus播放

Mockito scala验证无法使用scalatestplus播放,scala,playframework,mockito,scalatest,Scala,Playframework,Mockito,Scalatest,因此,我有一个使用scala的Play 2.5项目,我对build.sbt有以下依赖关系: "org.scalatestplus.play" %% "scalatestplus-play" % "1.5.1" % Test "org.mockito" % "mockito-all" % "1.10.19" % Test 我的测试是这样的: import java.util.UUID import org.mockito.Mockito._ import org.scalatest.Before

因此,我有一个使用scala的Play 2.5项目,我对build.sbt有以下依赖关系:

"org.scalatestplus.play" %% "scalatestplus-play" % "1.5.1" % Test
"org.mockito" % "mockito-all" % "1.10.19" % Test
我的测试是这样的:

import java.util.UUID
import org.mockito.Mockito._
import org.scalatest.BeforeAndAfter
import org.scalatest.mock.MockitoSugar
import org.scalatestplus.play.{OneAppPerSuite, PlaySpec}
import play.api.mvc.{AnyContentAsEmpty, Result}
import play.api.test.{FakeRequest, Helpers}
import play.api.test.Helpers._
import services.TargetServiceImpl

import scala.concurrent.Future

class MyControllerTest extends PlaySpec with MockitoSugar with BeforeAndAfter with OneAppPerSuite {
  val targetService = mock[TargetServiceImpl]
  var subject = new TargetAjaxController(targetService)

  "TargetAjaxController" should {

    "use the mocked service to delete a target" in {
      val oauthToken = UUID.randomUUID().toString
      val targetId = Random.nextLong()
      val result: Future[Result] = subject.delete(targetId).apply(fakeRequestWithSession(oauthToken))

      verify(targetService).deleteTarget(targetId, oauthToken)

      status(result) mustBe OK
      contentType(result) mustBe Some("application/json")
    }

  }

  private def fakeRequestWithSession(oauthToken: String): FakeRequest[AnyContentAsEmpty.type] = {
    FakeRequest(Helpers.DELETE, "/targets")
      .withSession(
        ("token", oauthToken)
      )
  }

}
运行此测试时,我收到一条错误消息,上面说:

org.mockito.exceptions.verification.WantedButNotInvoked: Wanted but not invoked (...) Actually, there were zero interactions with this mock
但是当我在
targetService#deletettarget
中放入一些println时,我在控制台中看到println,代码实际按照预期执行,mock被调用,Mockito只是没有记录mock的使用情况

最奇怪的是,这在开发人员的机器上运行良好,只有在Jenkins中运行时才会出现错误

我做错什么了吗?知道为什么
verify
调用不起作用吗


非常感谢

在subject.delete之前使用wait。UnitSpec有这种方法。检查您的规范中是否有此选项。

使用“在主题之前等待”。删除。UnitSpec有这种方法。检查它是否在您的规格中可用