GWT和Mock在MVP模式
我不知道如果这个问题已经问,但我找不到它的看法......我在寻找一种方式来嘲笑我的观点,为了测试我的演讲?我尝试使用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