gpt4 book ai didi

java - InjectMocks 几次

转载 作者:行者123 更新时间:2023-12-02 09:09:41 24 4
gpt4 key购买 nike

我有这段代码 -

@Component
public class ServiceA {

@Autowired
private ServiceB serviceB;

public void someMethod() {
for(Item item : items)
serviceB.foo(item);
}
}

@Component
public class ServiceB {

@Autowired
private ServiceC serviceC;

public void foo(Item item) {
if(item.boolean())
serviceC.metA();
else
serviceC.metB()
}
}

另外,我还有一个测试课 -

public serviceATest {


@Spy
@InjectMocks
private ServiceA serviceA;

@Spy
@InjectMocks
private ServiceB serviceB;

@Mock
private ServiceC serviceC;

@BeforeClass
public void setup() {
MockitoAnnotations.initMocks(this);
}

@Test
public generalTest() {
serviceA.someMethod();
}
}

在本例中 - ServiceA 中的 ServiceB 为 null,ServiceB 中的 ServiceC 不为 null。

我希望 ServiceA 中的 ServiceB 不为 null,并且 ServiceB 中的 ServiceC 不为 null。

我该怎么做才能让它发挥作用?

最佳答案

在这种情况下,您需要模拟对 ServiceB 类中定义的 ServiceC 的调用,其他情况也是如此

测试代码片段

@Test
public generalTest1() {
Mockito.when(serviceC.metA()).thenReturn(<Whatever is the return type of foo()>);
Mockito.when(serviceC.metB()).thenReturn(<Whatever is the return type of foo()>);
serviceB.foo();
}

关于java - InjectMocks 几次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59520313/

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