我想模擬一個具有多個參數的函數的對象。scalamock和多個參數的方法
我只是試圖設置它的期望。即,形式的服用點:
(item.addMetadata(,,,,,))期望( 「」, 「」, 「」, 「」, 「」, 「」 ,「」)
我只是不知道該怎麼寫。這個例子通常處理一個參數函數:(item.addMetadata _)。期望(「」)
如何處理多個參數?
EDIT1
我改變只是爲了編譯的緣故:
(item.addMetadata _) expects (where {
(schema: String, element: String, qualifier: String, lang: String, value: String) => true
})
現在的問題顯然是,該方法被重載?
我得到以下錯誤:
Error:(21, 15) ambiguous reference to overloaded definition, both method addMetadata in class Item of type (x$1: String, x$2: String, x$3: String, x$4: String, x$5: String, x$6: String, x$7: Int)Unit and method addMetadata in class Item of type (x$1: String, x$2: String, x$3: String, x$4: String, x$5: String)Unit match expected type ? (item.addMetadata _) expects (where { ^
的側面不是我也應該補充說,我正在嘲諷類而不是一個接口的事實。這是不受我控制的類,有一個私有的構造函數,只有一個靜態的創建方法。所以,我也得到了以下錯誤:
Error:(18, 24) constructor Item in class Item cannot be accessed in <$anon: org.dspace.content.Item> val item = mock[Item] ^
我真的很難理解你在這裏試圖解決的問題。我以爲你最初的問題是關於重複的參數,現在我想知道如何模擬重載的方法?另外Scalamock不能嘲諷函數,特徵或接口以外的其他任何東西。如果你想模擬課程,你需要像Mockito這樣的東西。 –
對不起,我結合了這件事,因爲我雖然錯誤可能是級聯。我發現解決方案將寫下答案 – MaatDeamon
您的陳述不準確Travis:這是Scalamock應該支持的內容:ScalaMock爲幾乎所有的Scala功能提供完全類型安全的支持。這包括: 嘲諷類,特點和案例類 嘲諷的功能和運營商 嘲諷型parametrised和重載方法類型約束 支持重複參數 支持和命名參數 嘲諷的Java類和接口 – MaatDeamon