我不知道问题是否已经提出,但我找不到它...我正在寻找一种方法来模拟我的观点以测试我的演示者?我尝试将 mockito 用于视图,并将其设置在演示者中,但结果是演示者,当我调用 presenter.getDisplay() (视图的获取器)时,我的所有小部件都是 null 吗?因为我相信这是正常的 mockito 不会模拟小部件。
我 100% 确定我弄错了什么,但我找不到。
谢谢你的启发:)
Display
对于 MVP Presenter,通过 gwt 接口(例如HasValue
、HasHTML
、HasClickHandlers
等)以及必要时可能的新接口依赖于 View 类 ( )。Presenter 类应该直接使用这些接口而不是小部件类。因此,模拟视图接口相当简单,应该在测试方法之间共享(使用setUp
or @Before
)。这还应该包括模拟 GWT 基础设施,例如EventBus
等。
有关带有 EasyMock 示例的不错的博客(转换为 mockito 简单但不直接),请参见此处。
这是一个非常简单的工作示例:
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 不会在您的测试用例中。
您需要确保在调用 getDislay() 时告诉 mockito 返回模拟视图。
某事就像 when(presenter.getDisplay()).thenReturn(mockView);