@Component
public class SomeService {
public void method1() {
int batchSize = method2();
// some operations...
}
public void method2() {
// something
return 10;
}
试验类别
@SpringJUnitConfig(classes = SomeService.class)
public class SomeServiceTests {
@AutoWired
SomeService someService;
@Test
void method1Test() {
// mock method2 to return some value instead of executing the method in service
someService.method1();
// assertions
}
当我尝试模仿method2如下时,我得到了异常
doReturn(100).when(someService).method2();
例外情况
org.mockito.exceptions.misusing.NotAMockException:
Argument passed to when() is not a mock!
Example of correct stubbing:
doThrow(new RuntimeException()).when(mock).someMethod();
我理解的例外,但不知道如何修复,以上共享代码是简化和集中在问题,我的代码有点复杂,不能在这里共享由于公司的政策。
谢谢你的帮助。
1条答案
按热度按时间8i9zcol21#
Exception的字面意思就是它所说的,你的服务不是一个mockito mock,你不能在它上面声明一个行为。
您可以使用
Mockito.spy
来监视或部分模拟您的服务对象。以便您只声明第二个方法的行为并执行第一个方法的实际代码。
或者,最简单的方法是在您的情况下使用
@SpyBean
:之后你就能