首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GwtMockito中模拟相同类型的多个字段

如何在GwtMockito中模拟相同类型的多个字段
EN

Stack Overflow用户
提问于 2013-12-27 18:13:26
回答 1查看 897关注 0票数 0

我知道@GwtMock注释在使用GwtMockitoTestRunner运行时会创建一个特定类型的模拟,但是如果我的小部件中有多个特定类型的项呢?例如,如果我的小部件中有许多按钮,或者有许多锚,那么是否有一种方法可以为每个小部件分别创建模拟呢?

现在,我正在考虑在我的测试中绕过这个缺点,比如

代码语言:javascript
复制
@GwtMock mockButtonn;

然后以后

代码语言:javascript
复制
when(mockButton.something()).thenReturn(value1,value2,value3,...)

这样我就可以根据调用顺序来区分按钮了。但这绝对是不可维护的。有人能提出一个替代方案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-03 07:06:16

有几种使用GwtMockito生成的模拟的不同方法,如果您还没有查看http://google.github.io/gwtmockito/的文档。这取决于您如何创建小部件:

  1. 如果您要通过UiBinder (带有@UiField注释的字段)创建小部件,那么您不必做任何特殊的事情--当您调用createAndBindUi时,它们将自动地充满模拟。然后,您可以在测试中直接引用它们,例如when(myClass.myLabel.getText()).thenReturn("some text")。这是因为字段对于UiBinder必须是包私有的,所以您可以从测试中看到它们。
  2. 如果要通过构造函数或其他方式(依赖注入)将小部件传递到类中,那么只需使用普通的Mockito @Mock注释在测试中声明字段即可。GwtMockito将调用Mockito来自动填充这些内容,但否则它与任何其他Mockito模拟一样。
  3. 如果您要通过GWT.create创建小部件,这就是@GwtMock很有价值的地方。@GwtMock@Mock之间唯一的区别是@GwtMock也会这样做,所以对GWT.create的任何调用都会返回带有@GwtMock注释的对象。所以用@GwtMock注释同一类型的多个字段是没有意义的,因为GWT.create只能返回其中的一个字段。
  4. 如果您正在通过new直接创建小部件,请不要这样做!为测试创建假版本是不可能的,您应该使用依赖注入代替。

到目前为止,1和2是最常见的情况--实际使用@GwtMock有点不常见。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20805672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档