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;
}