Ложные внешние вызовы методов из класса In Juints
Я пытаюсь высмеять вызов экземпляра другого класса из моего класса. Проблема, которую я вижу, заключается в том, что, похоже, мой фиктивный объект не заменяется реальным объектом при запуске теста. Я сделал простой пример, чтобы объяснить случай. Здесь я хочу напечатать tada
вместо this is awsome
какой метод printAwsome()
делает по умолчанию. Я поместил свой код в ссылку ниже для справки, пожалуйста, дайте мне знать, что я делаю не так, если что-нибудь.
https://gist.github.com/anonymous/1eab366c60efb75b9075f100a67c851b
ExcelSupporTest печатает this is awsome
вместо tada
когда я пытаюсь издеваться optionPane.printAwsome()
может кто-то указать мне, что я здесь делаю неправильно.
2 ответа
На что я могу вывести форму вопроса, пытаетесь ли вы издеваться над вызовом метода showMessageDialog
попробуйте издеваться DefaultOptionPane
следующее:
DefaultOptionPane defaultOptionPane = mock(DefaultOptionPane.class);
when(defaultOptionPane.showMessageDialog(anyObject(), anyObject(), anyString(), anyInt()))
.then(//do what you want to do here <Answer>);
То, что это просто означает, так как его читабельно, а также, когда вы звоните showMessageDialog
с любым набором параметров вы хотите вернуть то, что вы заявляете как Answer
в then
,
Короче говоря, если вы не передадите его в качестве параметра методу, вы не сможете высмеять вызов метода.
Это становится проблемой с областью видимости, поэтому замените это
public void testMethod() {
DefaultOptionPane optionPane = new DefaultOptionPane();
System.out.println("Entering method");
optionPane.printAwsome();
System.out.println("Exiting Method");
}
с этим
public void testMethod(DefaultOptionPane optionPane) {
System.out.println("Entering method");
System.out.println(optionPane.printAwsome());
System.out.println("Exiting Method");
}
и тогда вы можете издеваться optionPane