3
我在AKK-HTTP寫作休息測試用例,我在發言得到這個錯誤when(mockedRepository.getAllFromModule).thenReturn(x)
。我的班是如下:Scala的單元測試使用圖書館的Mockito
class GetModulesRestTest extends WordSpec with Matchers with ScalatestRouteTest with MockitoSugar {
val mockedRepository = mock[ImplModuleRepository]
val dummyRoutes = new GetModulesRest().routes
val inputData = Modules(1L,Some("ModuleName"), Some("SomeDescription"), false)
val dataJson = """[{"id": 1,"name": "HR","description": "This is about HR module","isRemoved": false}]"""
"Check Software Test" should {
"check for java and zookeeper installation" in {
val x = Future(Seq(inputData))
when(mockedRepository.getAllFromModule).thenReturn(x)
Get("/getmodules") ~> dummyRoutes ~> check {
responseAs[String] shouldBe dataJson
}
}
}
}
這裏ImplModuleRepository
是一個抽象類,這是從Postgres數據庫返回的所有模塊的列表,程序示值誤差如上所述,實際上聲明theReturn(x)不是編制,是表示編譯此錯誤:
Error:(32, 47) overloaded method value thenReturn with alternatives:
(x$1: scala.concurrent.Future[Seq[com.reactore.launchpad.entity.Modules]],x$2: scala.concurrent.Future[Seq[com.reactore.launchpad.entity.Modules]]*)org.mockito.stubbing.OngoingStubbing[scala.concurrent.Future[Seq[com.reactore.launchpad.entity.Modules]]] <and>
(x$1: scala.concurrent.Future[Seq[com.reactore.launchpad.entity.Modules]])org.mockito.stubbing.OngoingStubbing[scala.concurrent.Future[Seq[com.reactore.launchpad.entity.Modules]]]
cannot be applied to (scalaz.concurrent.Future[Seq[com.reactore.launchpad.entity.Modules]])
when(mockedRepository.getAllFromModule).thenReturn(x)
我不知道什麼是錯的。
它看起來像你正在導入,所以使用測試中的未來的斯卡拉版本,但不是在'ImplModuleRepository'中。 – Shadowlands
非常感謝@Shadowlands,我現在得到了它,在過去的2個小時裏一直和我在一起,非常感謝 – Aamir
沒問題 - 有時你只需要有人用新鮮的眼睛看同樣的東西。 – Shadowlands