我不知道问题是否已经问过,但是我找不到它...我正在寻找一种方法来模仿我的观点来测试我的演示者?我尝试使用mockito作为视图,并在演示者中设置它,但结果是演示者,当我调用presenter.getDisplay()(视图的getter)时,我的所有小部件都是null?因为我认为这是正常的mockito不会嘲笑小部件。
我100%肯定我弄错了但我无法找到它。
感谢你的启发:)
答案 0 :(得分:2)
这是一个非常简单的工作示例:
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");
}
}
当然,通常您的Presenter不会在您的测试用例中。
答案 1 :(得分:2)
MVP Presenter依赖于View类(Display
)来自gwt接口,例如HasValue
,HasHTML
,HasClickHandlers
等,并且可能需要新的接口。 Presenter类应该直接使用这些接口而不是widget类。因此,Mocking View界面非常简单,应该跨测试方法共享(使用setUp
或@Before
)。这还应该包括模拟GWT基础设施,例如EventBus
等。
对于包含EasyMock示例的精彩博客(简单但不直接转换为mockito),请参阅here。
答案 2 :(得分:0)
你需要确保在调用getDislay()时告诉mockito返回模拟视图。
好像 当(presenter.getDisplay())thenReturn(mockView);