0
在Groovy中使用模擬支持來測試與依賴關係的協作時,我遇到了一個有趣的問題。我們有兩個類(例如):Groovy MockFor - 如何處理對「模仿」方法的調用
class Dependency {
void method() {
throw new OperationNotSupportedException()
}
}
class Dependent {
Dependency dependency
void useDependency() {
dependency.with { method() }
}
}
講究方式方法如何()被調用的依賴 - 它完成內部「與」依賴的方法。
我需要模擬調用的測試方法(),所以我第一次嘗試做這樣的事情:
class IgnoringWithTest {
@Test
void testWithMock() {
def depMock = new MockFor(Dependency)
Dependent dep = new Dependent()
depMock.demand.method { }
dep.dependency = depMock.proxyInstance()
dep.useDependency()
depMock.verify dep.dependency
}
}
不幸的是這種「幼稚」的做法導致測試執行「不調用過程中的錯誤信息'with'預計到目前爲止,仍然有1個調用需要'method'。「這很好,因爲我們真的試圖在依賴關係上使用()方法調用。
我試圖忽視加入下一行調用與()方法:
depMock.ignore('with')
這個我沒收到後抱怨有()但方法調用原來使用的需求是期望聲明忽略。結果我得到了OperationNotSupportedException。
現在是一個問題 - 如何在執行時不會出現問題的情況下爲方法()創建模擬方法,它將在傳遞給()的閉包中調用?
謝謝。我不知道爲什麼,但在這種情況下使用'使用'塊。我會假設這也是一些Groovy錯誤。 – 2010-10-10 16:50:36