我試圖熟悉TDD和演示者優先模式。現在我堅持爲我的Presenter.class編寫測試用例。我的目標是覆蓋包括Action Event在內的整個Presenter.class,但我沒有膠水如何與Mockito做到這一點。爲演示者類撰寫Mockito測試(演示者優先模式)
Presenter.class:
public class Presenter {
IModel model;
IView view;
public Presenter(final IModel model, final IView view) {
this.model = model;
this.view = view;
this.model.addModelChangesListener(new AbstractAction() {
public void actionPerformed(ActionEvent arg0) {
view.setText(model.getText());
}
});
}}
IView.class:
public interface IView {
public void setText(String text);
}
IModel.class:
public interface IModel {
public void setText();
public String getText();
public void whenModelChanges();
public void addModelChangesListener(AbstractAction action);
}
PresenterTest.class:
@RunWith(MockitoJUnitRunner.class)
public class PresenterTest {
@Mock
IView view;
@Mock
IModel model;
@Before
public void setup() {
new Presenter(model, view);
}
@Test
public void test1() {
}
}
在此先感謝!
謝謝喲你不要回答。如果我的三元組變得更加複雜並且我不想創建如此大的存根,它會如何?沒有任何方法可以捕獲Action,執行並驗證它嗎? – Oliver
存根的原因是,在您的當前代碼中,'AbstractAction'是在'Presenter'代碼中創建的。如果它是由注入的工廠注入或者可能由注入的工廠創建的,那麼您可以嘲笑該模型以及使用mockito對存根進行存根。不太明確的編碼存根和更多的模擬存根......還有一種方法可以捕獲參數,這可能允許您僅使用模擬。當我有更多的時間時,我可能會試着詳細說明,或者也許有人用Mockito實際上使用了參數捕獲來嵌入。 –