注入由InjectingMock

时间:2018-02-20 01:31:07

标签: mockito

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

Foo有Var。 MyClass有Foo。 我通过@InjectMocks在Foo中注入Var并且喜欢将Foo注入MyClass但是MyClass中的Foo为null。

我想这是因为Foo没有被@Mock注释。有什么方法可以在将Var注入Foo时将Foo注入MyClass吗?

1 个答案:

答案 0 :(得分:0)

假设你的类依赖是这样的:

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;

总之,应该为每个依赖层编写单元测试。您不应该在一个测试文件中混合两个图层的单元测试。要对一个类进行单元测试,您只需要模拟其直接依赖项。因此,在测试MyClass时,您只需模拟Var并根据您的要求模拟其行为:

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