Java 注入自连线变量
我的服务级别如下:Java 注入自连线变量,java,spring,unit-testing,Java,Spring,Unit Testing,我的服务级别如下: @Component public class ABC { @Autowired private SomeClass assumeRoles; @Override public @NotNull Optional<Something> translate(int id) { // Some Code SomeClass result = assumeR
@Component
public class ABC {
@Autowired private SomeClass assumeRoles;
@Override
public @NotNull Optional<Something> translate(int id) {
// Some Code
SomeClass result = assumeRoles.getRole(id);
}
}
您已经将
SomeClass assumeRoles
标记为@Mock
,您可以模拟角色.getRole(id)代码>语句如下
Mockito.when(assumeRoles.getRole(Mockito.any(id))).thenReturn(someResult);
在做了一些假设之后,我已经回答了这个问题,我建议您使用正确的变量和类名来改进您提供的代码片段。顺便说一句,字段注入
不被spring团队推荐,如下所述:
因此,如果需要,您最好标记字段final
:private final SomeClass assumeoles代码>,然后提供如下构造函数:
public ABC(SomeClass assumeRoles) {
this.assumeRoles = assumeRoles;
}
这样,将伪SomeClass
传递给构造函数以获取ABC
的实例将更容易!你可以嘲笑你使用mockito@VinayPrajapati我尝试使用上面的代码,但仍然调用begin madewhat is assumeRoles?要模拟静态方法,必须使用power Mockito。这不是静态方法@GauravGupta
public ABC(SomeClass assumeRoles) {
this.assumeRoles = assumeRoles;
}