我很难弄清楚如何测试我的方法<code>foo(int length,String name)</code>是否被调用。
我的并发症:
foo
方法,如果它低于,则不会命中。无论哪种方式,它都会击中公共foo(客户)
一次。public class Foo {
public void foo(Customer customer) {
if (customer.length() > 5) {
foo(customer.length(), customer.name());
} else {
return
}
}
//Private overloaded method
private void foo(int length, String name) {
bar.bar();
}
}
public class Bar {
public Order bar(int length, String name) {
barProcessing(...)
}
private Order barProcessing(...) {
...calling another Bar method
}
}
到目前为止我所尝试的:
模仿Foo和Bar类,加上执行一系列< code>when()语句,然后执行...
除了我的并发症,这里还真是难住了。我还是Mockito的新手,对任何新的建议都持开放态度。
bar
并确认它被foo(客户)
在某个地方使用是正确的。你说你已经“尝试”嘲笑它,但不是你实际上是如何做到的。你的#2和#6通常应该工作;实际调试你的代码并检查bar.bar()
是否真的被调用,以及你的模拟是否被注入到你的Foo
中。经过一些澄清,您似乎误解了何时在测试中使用模拟。您专门为未测试的项目使用模拟;如果您正在测试Foo
但随后模拟它,则您没有测试实际行为!相反,模拟Bar
并提供它,但您可以模拟真实的Bar
(例如将其作为构造函数参数传递)。