gpt4 book ai didi

mockito - 使用 Mockito 模拟两个相同类型的对象

转载 作者:行者123 更新时间:2023-12-02 08:28:53 33 4
gpt4 key购买 nike

我正在使用 Mockito 编写单元测试,并且在模拟注入(inject)的类时遇到问题。问题是两个注入(inject)的类是相同的类型,仅通过它们的 @Qualifier 注释进行区分。如果我尝试简单地模拟 SomeClass.class,则该模拟不会被注入(inject),并且该对象在我的测试中为 null。我如何模拟这些对象?

public class ProfileDAL {

@Inject
@Qualifier("qualifierA")
private SomeClass someClassA ;

@Inject
@Qualifier("qualifierB")
private SomeClass someClassB ;

//...various code, not important
}

@RunWith(MockitoJUnitRunner.class)
public class ProfileDALLOMImplTest {

@InjectMocks
private ProfileDALLOMImpl profileDALLOMImpl = new ProfileDALLOMImpl();

@Mock
private SomeClass someClassA;
@Mock
private SomeClass someClassB;

private SomeResult mockSomeResult = mock(SomeResult.class);

@Test
public void testSomeMethod() {
when(someClassA .getSomething(any(SomeArgment.class)).thenReturn(mockSomeResult);
Int result = profileDALLOMImpl.someTest(This isn't relevant);
}

}

最佳答案

我尝试使用 JUnit 使用 Mockito 1.9.5 模拟两个具有相同类型的对象,并且它有效。

参见:http://static.javadoc.io/org.mockito/mockito-core/1.9.5/org/mockito/InjectMocks.html

文档中的相关类型信息:

“字段注入(inject);模拟将首先按类型解析,然后,如果存在多个相同类型的属性,则通过字段名称和模拟名称的匹配来解析。”

这似乎是说,当您有两个相同类型时,您应该使模拟名称与所有模拟的字段名称相匹配:

“注意1:如果您有相同类型(或相同删除)的字段,最好将所有带有匹配字段的@Mock注释字段命名,否则Mockito可能会感到困惑并导致注入(inject)失败不会发生。”

也许后一个正在咬你?

关于mockito - 使用 Mockito 模拟两个相同类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15485167/

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