2011-05-27 40 views
0

我想要測試一個調用類中幾個其他方法的方法。我希望其他方法被刪除,以免它們被執行。我原以爲這是使用'存根'的簡單問題。例如:正確使用'stub'

class Fubar { 
void fu() { 
    // . . . 
    bar(); 
} 

void bar() { 
    // . . . 
} 

void testFu() { 
    Fubar fubar = new Fubar(); 
    stub (method (Fubar.class, "bar")); 

    replay(); 

    fubar.fu(); 

    verifyAll(); 
} 

但是,這似乎並沒有工作。當我預料到它基本上沒有任何操作時,它終止於「酒吧」方法內部。我使用不正確?

謝謝。

+0

當您刪除重播方法時會發生什麼? – 2011-05-27 17:21:52

+0

我真的不能那樣做。還有更多的模擬東西比我在這裏展示的要多,如果我把它拿出來,那麼我會得到一些我不想要的對象的實際執行。 – CraigA 2011-05-27 17:35:30

回答

1

您的方法的主要問題是您的fubar實例正在測試中,與您的存根沒有任何關係。

我建議你到use createPartialMock(),它允許你創建Fubar的新實例,並在那裏只模擬bar()方法。因此,您可以通過這種方式測試fubar實例(由createPartialMock()生成)並記錄bar()的行爲。

+0

有趣。我會給它一個鏡頭。謝謝。 – CraigA 2011-05-27 18:10:13