我知道@GwtMock注释在使用GwtMockitoTestRunner运行时会创建一个特定类型的模拟,但是如果我的小部件中有多个特定类型的项呢?例如,如果我的小部件中有许多按钮,或者有许多锚,那么是否有一种方法可以为每个小部件分别创建模拟呢?
现在,我正在考虑在我的测试中绕过这个缺点,比如
@GwtMock mockButtonn;然后以后
when(mockButton.something()).thenReturn(value1,value2,value3,...)这样我就可以根据调用顺序来区分按钮了。但这绝对是不可维护的。有人能提出一个替代方案吗?
发布于 2014-02-03 07:06:16
有几种使用GwtMockito生成的模拟的不同方法,如果您还没有查看http://google.github.io/gwtmockito/的文档。这取决于您如何创建小部件:
@UiField注释的字段)创建小部件,那么您不必做任何特殊的事情--当您调用createAndBindUi时,它们将自动地充满模拟。然后,您可以在测试中直接引用它们,例如when(myClass.myLabel.getText()).thenReturn("some text")。这是因为字段对于UiBinder必须是包私有的,所以您可以从测试中看到它们。@Mock注释在测试中声明字段即可。GwtMockito将调用Mockito来自动填充这些内容,但否则它与任何其他Mockito模拟一样。GWT.create创建小部件,这就是@GwtMock很有价值的地方。@GwtMock和@Mock之间唯一的区别是@GwtMock也会这样做,所以对GWT.create的任何调用都会返回带有@GwtMock注释的对象。所以用@GwtMock注释同一类型的多个字段是没有意义的,因为GWT.create只能返回其中的一个字段。new直接创建小部件,请不要这样做!为测试创建假版本是不可能的,您应该使用依赖注入代替。到目前为止,1和2是最常见的情况--实际使用@GwtMock有点不常见。
https://stackoverflow.com/questions/20805672
复制相似问题