【问题标题】:Mocking a service in Spring 5.0.7.RELEASE在 Spring 5.0.7.RELEASE 中模拟服务
【发布时间】:2021-05-02 04:43:48
【问题描述】:

我有一个 Spring 5.0.7.RELEASE 应用,有一些 WebLayer 测试我的应用中有这个测试:

@RunWith(SpringRunner.class)
@WebAppConfiguration
public class HongoControllerTest  {

    @Mock
    FactureService factureService;

    @Autowired
    private WebApplicationContext wac;

    private MockMvc mockMvc;

    ObjectMapper obj = new ObjectMapper();


    @Before
    public void setup() {

        MockitoAnnotations.initMocks(this);
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac)
                .build();

        when(factureService.setLockFilter(any())).thenReturn(Boolean.TRUE);
    }
}

但是当我运行测试时,FactureService 没有被模拟

【问题讨论】:

    标签: java spring-boot spring-mvc junit mockito


    【解决方案1】:

    我不完全确定,因为您没有展示实际测试,但我想您应该使用 @MockBean 而不是 @Mock

    @Mock 在您自己进行依赖注入时用于普通单元测试。 @MockBean 用于当您想将 Mock 用作常规 Bean 时进行集成测试。

    长篇大论。试试这个:

    @MockBean
    FactureService factureService;
    

    有关更多信息,请查看此article

    【讨论】:

    • 但是@MockBean 属于 SpringBoot,而不是 Spring,我使用的是 Spring 而不是 SpringBoot :-(
    猜你喜欢
    • 2021-05-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2019-06-06
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    相关资源
    最近更新 更多