gpt4 book ai didi

java - Mockito InjectMocks 到静态对象

转载 作者:行者123 更新时间:2023-11-30 10:54:09 25 4
gpt4 key购买 nike

我有这样的东西

@Component
public class TestController {

@Autowired
private TestService testService;

public String getSomething(String parameter1) {
return testService.fetchSomething(parameter1);
}
}

我用测试覆盖它并遇到以下问题:

@RunWith(MockitoJUnitRunner.class)
public class TestControllerTest {
private static TestService testService = mock(TestService.class);
@InjectMocks
private static TestController testController = new TestController();

....
}

这些字段是静态的,因为我需要它们用于@ClassRule。

问题是在这种情况下注入(inject)不起作用,testService 在 testController 中为 null。

是否可以提供对静态对象的注入(inject)(无需在 Controller 中创建构造函数)? 或者也许有另一种解决方法?

问题不是模拟静态方法,而是将模拟注入(inject)静态对象将不胜感激任何建议,谢谢。

最佳答案

我认为您必须使用 static block 。

@RunWith(MockitoJUnitRunner.class)
public class TestControllerTest {
private static TestService testService = mock(TestService.class);

private static TestController testController ;
static {
testController = new TestController(testService);
}
....
}

当您使用神奇的注入(inject)时,您必须使用一些反射,或更改为构造函数注入(inject)。无论如何,生活会更好。

关于java - Mockito InjectMocks 到静态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33755789/

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