Mockito when().thenReturn()无法正常工作

tam*_*d14 9 java unit-testing mocking mockito

我有一个带有2个函数的类A:函数a()返回一个随机数.function b()调用a()并返回返回的值.

在测试中我写了这个:

A test = Mockito.mock(A.class)
Mockito.when(test.a()).thenReturn(35)
assertEquals(35,test.a())
assertEquals(35,test.b())
Run Code Online (Sandbox Code Playgroud)

测试在第二个断言时失败.有谁知道为什么?

要清楚 - 这不是我真正的代码,而是一个简单的代码来解释我的问题

Saj*_*ran 19

由于类A被模拟,所有方法调用都不会转到实际对象.这就是为什么你的第二个断言失败(我猜它可能已经返回0).

解:

你可以做点什么

when(test.b()).thenCallRealMethod();
Run Code Online (Sandbox Code Playgroud)

否则你可能会spy喜欢

A test = spy(new A());
Mockito.when(test.a()).thenReturn(35);
assertEquals(35,test.a());
assertEquals(35,test.b());
Run Code Online (Sandbox Code Playgroud)