我可以仅使用测试类的一种方法使用@MockBean来模拟Bean吗?

问题描述

我有这个mvc测试课程

@RunWith(springrunner.class)
@SpringBoottest
public class UserTest {

    private mockmvc mockmvc;

    @Resource
    private WebApplicationContext webApplicationContext;

    @MockBean
    private UserBO userBO;

    @Before
    public void init() {
        mockmvc = mockmvcBuilders.webAppContextSetup(webApplicationContext).build();
// ...
    }
// ...

一个测试用例中,我需要模拟另一个bean来覆盖一个特殊的错误处理分支。这可能吗?我是否可以使用与@MockBean的{​​{1}}相同的任何方法({{1}不会被UserBO重新调整,而是在同一级别上使用就像PermissionBO在被测类中。)

UserBO

解决方法

您应该在测试方法中使用thenReturn(),以便仅在特定测试中使用特定的模拟值。

例如: Mockito.when(userBO.example()).thenReturn("Specific test method mock");