如何在测试类中使用@SpringBootTest类mockbean ?



@SpringBootTest(classes = TestConfig.class)
class ServiceIntegTest {
}

class TestConfig {
@MockBean
RandomExecutor randomExecutor

}

我想在ServiceIntegTest类中使用RandomExecutor模拟bean,怎么做?

我不是在嘲笑TestConfig类本身的bean方法,因为在ServiceIntegTest类中有各种测试,其中RandomExecutor的方法必须以不同的方式表现。

您使用MockBean就像使用@Mock一样,它只是被注入到您正在用于测试的spring上下文中。

@SpringBootTest
class ServiceIntegTest {
@MockBean RandomExecutor randomExecutor;
// this service gets autowired from your actual implementation,
// but injected with the mock bean you declared above
@Autowired
YourService underTest;
@Test
void verifyValueUsed() {
final int mockedValue = 5;
when(randomExecutor.getThreadCount()).thenReturn(mockedValue);
int result = underTest.getExecutorThreads();
assertThat(result).isEqualTo(mockedValue);
}
@Test
void verifyExecutorCalled() {
underTest.performAction("argument");
verify(randomExecutor).executorMethod("argument");
}
}

您不必在配置中设置@MockBean,您必须在测试类中这样做。然后,您可以在一些测试类中模拟它,并在其他测试类中使用真实实例。

看看@MockBean的基本用法:https://www.infoworld.com/article/3543268/junit - 5 -教程部分- 2单元-测试- spring mvc - 5. - junit html

相关内容

  • 没有找到相关文章

最新更新