GWT和模拟MVP模式中的视图

时间:2010-06-07 04:53:23

标签: gwt junit mockito

我不知道问题是否已经问过,但是我找不到它...我正在寻找一种方法来模仿我的观点来测试我的演示者?我尝试使用mockito作为视图,并在演示者中设置它,但结果是演示者,当我调用presenter.getDisplay()(视图的getter)时,我的所有小部件都是null?因为我认为这是正常的mockito不会嘲笑小部件。

我100%肯定我弄错了但我无法找到它。

感谢你的启发:)

3 个答案:

答案 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接口,例如HasValueHasHTMLHasClickHandlers等,并且可能需要新的接口。 Presenter类应该直接使用这些接口而不是widget类。因此,Mocking View界面非常简单,应该跨测试方法共享(使用setUp@Before)。这还应该包括模拟GWT基础设施,例如EventBus等。

对于包含EasyMock示例的精彩博客(简单但不直接转换为mockito),请参阅here

答案 2 :(得分:0)

你需要确保在调用getDislay()时告诉mockito返回模拟视图。

好像 当(presenter.getDisplay())thenReturn(mockView);