2015-09-12 75 views
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) 

我不知道什麼是錯的。

+0

它看起來像你正在導入,所以使用測試中的未來的斯卡拉版本,但不是在'ImplModuleRepository'中。 – Shadowlands

+0

非常感謝@Shadowlands,我現在得到了它,在過去的2個小時裏一直和我在一起,非常感謝 – Aamir

+0

沒問題 - 有時你只需要有人用新鮮的眼睛看同樣的東西。 – Shadowlands

回答

1

(從評論):

看起來要導入,因此使用,測試未來的Scalaz版本,但不是在ImplModuleRepository