【发布时间】:2018-08-24 14:35:56
【问题描述】:
我想知道如何使用 Groovy/Spock 在类中模拟一些私有变量。 假设我们有这段代码:
public class Car {
private Engine engine;
public void drive(){
System.out.println("test");
if (engine.isState()) {
// Do something
} else {
// Do something
}
}
}
在 Mockito 中我可以写:
@Mock
private Engine engine;
@InjectMocks
private Car car = new Car();
@Test
public void drive() {
when(engine.isState()).thenReturn(true);
car.drive();
}
但我不知道如何在 Spock 中做同样的事情。 Spock 中的@InjectMocks 是什么?
【问题讨论】:
-
引擎在你测试的类中是如何设置的?
-
@tim_yates 它被设置在一些被init方法调用的私有方法中。
-
您可能希望将其传递给构造函数,以使该类更易于测试