如何模拟/测试返回 void 的方法,可能在 Mockito 中

2022-09-02 22:56:44

我遇到了一个问题,我找不到一个优雅的解决方案。

所以问题是模拟Selenium Web驱动程序,我不知道我应该如何测试/模拟虚空方法。

public void clickAndWait(String locator) {
    if(isElementPresent(locator) == false) throw some exception;
    selenium.clickAndWait(); //a problematic delegating call to selenium
}

所以我要问的是,如何正确地测试这样一个方法,一个测试是抛出异常,但是如何正确地测试我委托给的那个无效方法呢?


答案 1

Mockito 文档中的以下代码示例演示了如何模拟 void 方法:

doThrow(new RuntimeException()).when(mockedList).clear();

// following throws RuntimeException:
mockedList.clear();

答案 2
doAnswer(new Answer<Void>() {
        @Override
        public Void answer(InvocationOnMock invocation) throws Throwable {

            return null;
        }
    }).when(mock).method((SomeClass) anyObject());