我怎么能用B mock作为构造函数参数来模拟A?

时间:2016-12-14 17:45:25

标签: java unit-testing junit mocking

如何使用B mock作为构造函数参数模拟A?

private B actionContext;
private A target;

@BeforeEach
void setUp() {
    actionContext = mock(B.class);
    target = mock?
}

public class A {//...
    public A(B b){//...
    }
}

2 个答案:

答案 0 :(得分:0)

您可以使用mockito注释

@Mock
private B mockB;

@Spy
@InjectMocks
private A testObj = new A(mockB);

在setUp方法中设置测试行为... 当(mockB.method())thenReturn();

答案 1 :(得分:0)

如果您想模拟class A方法,则无需模拟class B

模仿class A就足够了

@BeforeEach
void setUp() {
    A mockedA = mock(A.class);
}

如果你想使用class B的模拟方法,你可以单独模拟它

@BeforeEach
void setUp() {
    A mockedA = mock(A.class);
    B mockedB = mock(B.class);
}

还建议您阅读Mockito docs以了解嘲弄原则。