当我尝试通过传递已转换的值来模拟重载方法时,我得到以下错误。
例如为了模仿
ABCClass.logWarn(Logger log,String , String description, Throwable e);
我在做
`ABCClass.logWarn(null,WarningString, description, (Throwable)null);
...\\ The rest of the methods are standard...
verify(event).setStatus((Throwable)null);//**Line 76**
但是当我运行我的测试用例时,我得到以下错误
ABCClassTest.testLogWarn:76
Wanted but not invoked:
MockEvent.setStatus(null);
-> at com.path.ABCClassTest.testLogWarn(ABCClassTest.java:76)
However, there were other interactions with this mock:.....
为什么期望setStatus(null)
被调用,即使在专门调用之后也是如此
setStatus((Throwable)null);
?
其他详细信息
logWarn的定义
private static void logWarn(String eventType, String eventName, String errMsg, Throwable e) {
AnEvent event = AnEventFactory.create(eventType);
event.setName(eventName);
if(e!=null)
event.setStatus(e);//so this is never called if the throwable is null.
//How do I modify the verify behavior?
/*
Bleh */
event.completed();
}
答案 0 :(得分:1)
转换不会更改变量引用的对象。当您以与其类型不匹配的方式使用变量时,它只会使编译器不会抱怨。因此,您确实在null
之后将setStatus
传递到verify
。
当然,如果你问为什么setStatus
实际上没有被你正在测试的代码调用,你需要在任何人告诉你之前发布它。
答案 1 :(得分:-1)
对Mockito不熟悉我并没有完全意识到我在寻找什么。但this正是我想要的。 希望这有助于其他人遇到类似的问题。