如何使用 Mockito 模拟 @Inject Api-Class

How to mock @Inject Api-Class with Mockito

我正在尝试使用 Junit 测试 Java 方法,

不幸的是,我无法在某一时刻进一步了解,因为 Api class 被捍卫为 @Inject

其实我已经尽力了,不幸的是null总是返回并且每次都测试失败。

    @Inject
    private MemberAPi memberApi;




    NewMember newMember = new NewMember();
    newMember = MemberApi.addMember(new CreateMemberParameterObj (newMember, getId , false, Obj ))

测试:我试着像那样模拟它,例如

   @Mock
    private MemberAPi mockedMemberApi;



    when(mockedMemberAPi.addMember(anyObject())).thenReturn(anyObject());




模拟 MemberAPI 和 NewMember 类。 使用 @InjectMocks,Mockito 将自动注入 mockMemberAPI 对象。

这是一些代码:

@InjectMocks
private Blam classToTest; // your class.

@Mock
private MemberAPi mockMemberAPi;

@Mock
private NewMember mockNewMember;

@Before
public void before()
{
    MockitoAnnotations.openMocks(this);

    doReturn(mockNewMember).when(mockMemberAPI).addMember(anyObject());
}

我用doReturn().when().xxx(); 模式而不是 when(mockedMemberAPi.addMember(anyObject())).thenReturn(mockMemberAPI); 模式。

注意: thenReturn(anyObject()); 没有意义,因为你不能 return anyObject().