我不知道如果這個問題已經問,但我找不到它的看法......我在尋找一種方式來嘲笑我的觀點,爲了測試我的演講?我嘗試使用mockito作爲視圖,並將其設置在演示者中,但是在演示者結果中,當我調用presenter.getDisplay()(視圖的getter)時,我的所有控件都爲null?因爲我相信這是正常的mockito不會嘲笑小部件。GWT和Mock在MVP模式
我敢100%肯定,我錯了東西,但我不能找到它。
感謝您的近代啓蒙:)
我不知道如果這個問題已經問,但我找不到它的看法......我在尋找一種方式來嘲笑我的觀點,爲了測試我的演講?我嘗試使用mockito作爲視圖,並將其設置在演示者中,但是在演示者結果中,當我調用presenter.getDisplay()(視圖的getter)時,我的所有控件都爲null?因爲我相信這是正常的mockito不會嘲笑小部件。GWT和Mock在MVP模式
我敢100%肯定,我錯了東西,但我不能找到它。
感謝您的近代啓蒙:)
,你需要確保你告訴時的Mockito你打電話getDislay返回嘲笑視圖()。
STH等 時(presenter.getDisplay())thenReturn(mockView)。
的確,但是我應該將每個小部件一個一個地嘲笑到視圖中嗎? 模擬每個部件 嘲笑視圖並告訴mockito返回部件時詢問? – 2010-06-07 05:25:16
你的觀點不應該返回小部件 - 它應該有它做一些小部件的方法(例如顯示/隱藏,設置在標籤的字符串,得到一個輸入一個字符串),但你的演示應該*不*知道當您使用mock(yourClass.class)時,顯示包含小部件 – tgdavies 2010-06-07 07:07:47
,您將獲得對不知道任何事物的對象的引用。您需要告訴mockito在調用每種方法後您期望發生的事情。 – markovuksanovic 2010-06-07 07:58:16
這裏是一個非常簡單的工作示例:
import junit.framework.TestCase;
import org.mockito.Mockito;
public class SimpleGwtTest extends TestCase {
private static class UpperCasePresenter {
private final Display display;
public interface Display {
void setString(String s);
}
private UpperCasePresenter(String s, Display display) {
this.display = display;
display.setString(s.toUpperCase());
}
}
public void testPresenter() {
UpperCasePresenter.Display d = Mockito.mock(UpperCasePresenter.Display.class);
new UpperCasePresenter("foo", d);
Mockito.verify(d).setString("FOO");
}
}
當然通常你演示不會是你的測試用例中。
MVP Presenter依賴於View類(Display
)通過gwt接口,如HasValue
,HasHTML
,HasClickHandlers
等,並可能根據需要添加新接口。 Presenter類應直接使用這些接口而不是Widget類。因此Mocking View界面相當簡單,應該跨測試方法共享(使用setUp
或@Before
)。這也應該包括嘲笑GWT基礎設施,如EventBus
等。
對於帶EasyMock示例的好博客(簡單但不直接轉換爲mockito),請參見here。
最好爲一個非常簡單的測試用例發佈一些代碼。 – tgdavies 2010-06-07 05:10:17
你好,我們終於找到了一種方法來測試演示者。我們總結在一個類中的每個部件,以及使用接口,如: '公共類TextAreaWrapper擴展WidgetWrapper