具有空指针异常的PowerMock Private方法

时间:2015-08-05 19:14:31

标签: java unit-testing mocking

所以我有类似这样的代码

Class JobSearchService() {
    private SearchSetUpImpl searchSetUp;
    ...

    SearchIndex si = generateIndexes(id);
    Job jobs = si.readJobs(keyWord); // <-- si is null , null pointer         exception....
    ...
}

private Job generateIndexes(Id id) {
    ...
}

我想使用powerMock返回作业,但它总是为si返回null。

在我的测试中我有

PowerMockito.when(JSS, PowerMockito.method(JobSearchService.class,
    "generateIndexes", WorkId.class))
    .withArguments(id)
    .thenReturn(si);

如何编写下一个跳过的程序或返回正确的作业而不打空值? 我也嘲笑了SearchIndex si = Mockito.mock(SearchIndex.class);

1 个答案:

答案 0 :(得分:0)

为什么不将SearchIndex包装到您自己的类中。

class JobReader {

    Job readJobs(Id id, String keyWord) {
        SearchIndex si = generateIndexes(id);
        return si.readJobs(keyWord);
    }
}

然后您可以在没有PowerMock的情况下模拟JobReader。只需将它注入您需要使用它的任何地方。