注射模拟由注射毫克启动

  • 本文关键字:启动 模拟 mockito
  • 更新时间 :
  • 英文 :

    @InjectMocks
    private Foo foo;
    @Mock
    private Var var;
    @InjectMocks
    private MyClass myClass

foo具有var。myclass有foo。我是@InjectMocks在FOO中的注射var,并且喜欢向myclass注入foo,但myclass中的foo是无效的。

我想这是因为foo未经@Mock注释。有什么办法可以将foo注入myllass,同时向foo注入var?

假设您的类依赖性是这样的:

MyClass ---dependsOn--> Foo --dependsOn--> Var

如果您正在为MyClass编写单元测试,则只需要模拟Foo并注入MyClass即可。因为在这种情况下嘲笑Foo本身,因此您不必担心其依赖关系。

@Mock private Foo foo;
@InjectMock private MyClass myClass;

要为Foo编写单元测试,我建议您在单独的文件中创建一个单独的单元测试类。在那里您可以模拟Var并注入Foo

@Mock private Var var;
@InjectMock private Foo foo;

得出结论,应为每一层的依赖项编写单位测试。您不应在一个测试文件中混合两层的单元测试。要单元测试一个类,您只需要模拟其 Direct 依赖项即可。因此,在测试MyClass时,您只需模拟Var并根据您的要求模拟其行为:

Mockito.when(var.someMethod()).thenReturn(someValue);

相关内容

  • 没有找到相关文章

最新更新