Java 莫基托什么时候不工作
我试图为GWTP presenter编写一个测试,但由于某些原因,mockito when()不会触发。我用stubed方法返回一个mock,但它返回null,因为正如我所说的方法when()不工作(或者我假设是这样)。有什么想法吗 我的单元测试:Java 莫基托什么时候不工作,java,gwt,Java,Gwt,我试图为GWTP presenter编写一个测试,但由于某些原因,mockito when()不会触发。我用stubed方法返回一个mock,但它返回null,因为正如我所说的方法when()不工作(或者我假设是这样)。有什么想法吗 我的单元测试: @RunWith(JukitoRunner.class) public class PresenterATest { @Inject PresenterA presenterA; PresenterA presenterA
@RunWith(JukitoRunner.class)
public class PresenterATest {
@Inject
PresenterA presenterA;
PresenterA presenterASpy;
@Mock
ColumnProperties columnProperties;
@Before
public void setUp() throws ActionException {
MockitoAnnotations.initMocks(this);
presenterASpy = spy(presenterA);
}
@Test
public void presenterTest() {
setUpColumnPropertiesMock();
when(presenterASpy.getSelectedColumn()).thenReturn(columnProperties);
// adjust colors intervals with slider
presenterA.saveColumnIntervals(Arrays.asList(45.55, 59.9, 70.05, 100.15),
Arrays.asList("#e9a8ff", "#d3ffa6", "#ffffa6", "#a8d4ff", "#ffbca6"));
}
private void setUpColumnPropertiesMock() {
when(columnProperties.getName()).thenReturn("col1");
}
}
演示者:
public class PresenterA {
@Inject
Settings settings;
public ColumnProperties getSelectedColumn() {
return settings.getSelectedColumn();
}
public void saveColumnIntervals(List<Double> intervals, List<String> colors) {
ColumnProperties columnProperties = getSelectedColumn();
columnProperties.setIntervalList(intervals); //Nullpointer here, because getSelectedColumn() returns null
columnProperties.setColorList(colors);
}
}
公共类演示者a{
@注入
设置;
公共列属性getSelectedColumn(){
返回设置。getSelectedColumn();
}
公共void保存列间隔(列表间隔、列表颜色){
ColumnProperties ColumnProperties=getSelectedColumn();
columnProperties.setIntervalList(Interval);//此处为null指针,因为getSelectedColumn()返回null
columnProperties.setColorList(颜色);
}
}
将spy配置为返回columnProperties
,但在mock(包装到spy中)上调用该方法。但是模拟人不知道那是包裹在间谍里面的。我想我不明白你想说什么您在mock上调用该方法
这是什么意思?我调用的方法saveColumnInterval
没有在mock上调用,InjectPresenter类调用它。你能解释一下吗?我假设对注入类(换句话说,该类的当前实例)进行间谍可以存根我想要的任何方法,我认为它过去在我的其他presenter测试中是这样工作的……但现在我必须使用间谍对象调用saveColumnInterval
。这是为什么?您可以使用spy,但必须使用spy实例,而不是包装的实例。您可以将spy配置为返回columnProperties
,但可以调用mock(包装到spy中)上的方法。但是模拟人不知道那是包裹在间谍里面的。我想我不明白你想说什么您在mock上调用该方法
这是什么意思?我调用的方法saveColumnInterval
没有在mock上调用,InjectPresenter类调用它。你能解释一下吗?我假设对注入类(换句话说,该类的当前实例)进行间谍可以存根我想要的任何方法,我认为它过去在我的其他presenter测试中是这样工作的……但现在我必须使用间谍对象调用saveColumnInterval
。为什么?你可以使用spy,但是你必须使用spy实例,而不是包装的实例。