Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 莫基托什么时候不工作_Java_Gwt - Fatal编程技术网

Java 莫基托什么时候不工作

Java 莫基托什么时候不工作,java,gwt,Java,Gwt,我试图为GWTP presenter编写一个测试,但由于某些原因,mockito when()不会触发。我用stubed方法返回一个mock,但它返回null,因为正如我所说的方法when()不工作(或者我假设是这样)。有什么想法吗 我的单元测试: @RunWith(JukitoRunner.class) public class PresenterATest { @Inject PresenterA presenterA; PresenterA presenterA

我试图为GWTP presenter编写一个测试,但由于某些原因,mockito when()不会触发。我用stubed方法返回一个mock,但它返回null,因为正如我所说的方法when()不工作(或者我假设是这样)。有什么想法吗

我的单元测试:

@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实例,而不是包装的实例。