我有一个简单的问题,我做错了什么?我为SomeClass创建了一个间谍。这是代码:
public class SomeClass {
protected Car car;
public SomeClass(Car car) {
this.car = car;
}
public void doSomething() {
BMW bmw = car.getBMW();
bmw.setWheels(null);
if(StringUtils.isEmptyStringOrNull(bmw.getWheels())) {
throw new Exception e;
}
}
}
doSomething方法中发生了很多事情,我只是为了解决我的问题而将其缩短了,我无法更改。这是我的测试课:
@RunWith(PowerMockRunner.class)
public class SomeClassTest {
private SomeClass someClassTest;
private Car carTest;
@Before
public void setUp() {
carTest = new Car(createVolkswagen(), createBMW());
someClassTest = new SomeClass(car);
}
@Test
public void doSomethingTest() {
BMW spy = spy(carTest.getBMW());
doNothing.when(spy).setWheels(any());
someClassTest.doSomething();
}
}
它总是将值设置为null,我希望它是其他值,但不能为null
答案 0 :(得分:0)
这里
_ABC
您正在创建一个新的BMW spy = spy(carTest.getBMW());
实例,该实例充当真实对象的代理。间谍应该捕获一些调用,并将另一个调用代理到它所监视的基础“真实”对象。
为了使其正常工作,您必须将spy
传递到spy
中的活动对象中,以便对bmw的每次调用都会成为间谍,例如
setup
比它将起作用。