我有一个方法,看起来像这样:
public Response methodA(ParamObject po, Supplier<Response> supplier)
字符串Supplier
包含对另一个类的方法的调用。
我试图在Supplier
中 Package 一些代码,使用一组更复杂的逻辑,类似于策略模式,它确实使代码更容易理解。
它看起来像:
public Controller {
private Helper helper;
private Delegate delegate;
public void doSomething() {
ParamObject po = ....
delegate.methodA(po, () -> {
helper.doSomethingElse(v1, v2);
}
}
}
型
在我对Controller
的测试中,我模拟了Helper
和Delegate
,我希望验证helper.doSomething
是用正确的参数值调用的,然后返回一个模拟的响应。
由于delegate
是一个mock,Supplier
实际上从未执行过,因此对helper
的调用的验证无法被mock或验证。
有可能做到这一点吗?感觉我应该能够告诉mockito捕获lambda,和/或lambda本身捕获的变量,并Assert它们是正确的值,如果它们是我正在寻找的值,则返回我的mock响应。
2条答案
按热度按时间ki1q1bka1#
假设你的类助手看起来像这样:
字符串
然后可以这样做:
型
9avjhtql2#
有了lamda函数,你还可以让它看起来更漂亮、更紧凑--这是另一个很好的答案。
字符串