我有一个UT使用jmockit和mockito
在这个UT中,我有一个字段@Tested TestService testService
testService使用 Car 作为参数:testService.doTest(Car car)
然后我的UT:testService.doTest(any(Car.class))
当我调试此UT时,我发现testService.doTest(any(Car.class))
总是将 null 传递给doTest(car)
,如果我想在<{>一个Car的实例,那该怎么办? {1}}?
我尝试了doTest(car)
,(Car)any()
,没有任何帮助,任何想法?
更新 我有代码:
(Car)anyObject()
UT代码:
class TestService{
@AutoWired
Dependency dependency;
doTest(Car car){
dependency.doSomeThing(car);
print(car.toString());
}
}
这是所有jmockit版本,我在@Injectable Dependency mockDependency;
@Tested TestService testService;
//record
new Expectations() {{
mockDependency.doSomeThing((Car)with(any));
result=detailCar;
}};
//call verify
new Verifications(){{
codeResult=testService.doTest((Car)with(any))
//some codeResult assert
}};
如果我将其更改为:
car.toString()
或
new Verifications(){{
codeResult=testService.doTest(new Car())
//some codeResult assert
}};
我在final Car car;
new Verifications(){{
codeResult=testService.doTest(car)
//some codeResult assert
}};
看到{strong> MissingInvocation 似乎codeResult=testService.doTest(...)
与instance car
不匹配
答案 0 :(得分:0)
Mock car = mock(Car.class)
并在doTest中传递此car
。希望它会有所帮助
此外,如果您正在调用Car的任何方法,请确保您还定义了行为。
例如
when(car.getName(anyString())).then("bmw");