gpt4 book ai didi

java - 我可以监视使用 get 方法的对象吗?

转载 作者:行者123 更新时间:2023-12-02 00:55:40 26 4
gpt4 key购买 nike

我有一个简单的问题,我做错了什么?我为 SomeClass 创建了一个 spy 。这是代码:

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

最佳答案

这里

BMW spy = spy(carTest.getBMW());

您正在创建一个新的 spy 实例,充当真实对象的代理。 spy 应该捕获一些调用,并将另一个调用代理到它所监视的底层“真实”对象。

为了让它工作,你必须将你的spy传递到setup中的 Activity 对象中,这样对你的宝马的每次调用都将通过spy进行,例如

carTest = new Car(createVolkswagen(), spy(createBMW()));

比它会起作用。

关于java - 我可以监视使用 get 方法的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57820892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com