2011-04-18 56 views
0

我的代碼結構的功能是象下面這樣:模擬與一個回調函數作爲參數

class A { 
    def a(x:() => Unit) { do something} 
} 

class B { 
    .... 
    def foo() { 
    def x() { something } 
    a(x) 
    } 
} 

現在我想用一個模擬A.做單元測試B級的

val a = mock[A] 
def x() { ... } 
a.a(x) atLeastOnce 

以上沒有按沒有工作。由於這個新的x不是foo()中的x。但是foo裏面的x是本地的,不適合單元測試。除了將x移出foo以外的任何建議?

+0

我也想測試B. A是外部類依賴於DB - 意味着我必須嘲笑一個在單元測試。由於A.a需要一個回調函數作爲它的參數,我寫了x()。 – user398384 2011-04-19 02:54:39

+0

聽起來好像你想表達的那樣:'A.a'被調用至少一次,但你不關心在調用中使用的參數。我不知道EasyMock,但嘲笑框架通常用'a.a(any)atLeastOnce'等表達這樣的期望。如果你關心關閉(例如,你想驗證它有一個特定的副作用),你可以捕獲實際的參數並調用它(以僞造'A'的角色)。 – 2011-04-19 03:03:07

回答

相關問題