2

我不知道问题是否已经提出,但我找不到它...我正在寻找一种方法来模拟我的观点以测试我的演示者?我尝试将 mockito 用于视图,并将其设置在演示者中,但结果是演示者,当我调用 presenter.getDisplay() (视图的获取器)时,我的所有小部件都是 null 吗?因为我相信这是正常的 mockito 不会模拟小部件。

我 100% 确定我弄错了什么,但我找不到。

谢谢你的启发:)

4

3 回答 3

2

Display对于 MVP Presenter,通过 gwt 接口(例如HasValueHasHTMLHasClickHandlers等)以及必要时可能的新接口依赖于 View 类 ( )。Presenter 类应该直接使用这些接口而不是小部件类。因此,模拟视图接口相当简单,应该在测试方法之间共享(使用setUpor @Before)。这还应该包括模拟 GWT 基础设施,例如EventBus等。

有关带有 EasyMock 示例的不错的博客(转换为 mockito 简单但不直接),请参见此处

于 2010-07-14T04:03:42.147 回答
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 不会在您的测试用例中。

于 2010-06-07T08:01:51.120 回答
0

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

某事就像 when(presenter.getDisplay()).thenReturn(mockView);

于 2010-06-07T05:11:53.563 回答