spring-boot - Kotlin Spring WebMvcTest Mockk

标签 spring-boot testing kotlin mockk

有没有人遇到过 @MockkBean 似乎没有实际工作或者至少 stub 没有通过的问题?

简单的例子:

@RunWith(SpringRunner::class)
@WebMvcTest(controllers = [WidgetController::class])
class WidgetTest {

    @Autowired
    private lateinit var mockMvc: MockMvc
    @MockkBean
    private lateinit var widgetService: WidgetService

    @Test
    fun test() {
        val value = objectMapper.readValue<MyWidget>(something()))
        every {
            widgetService.getWidget(ArgumentMatchers.anyString())
        } returns value


        mockMvc
                .perform(
                        get(
                                "/apis/widget/v1/widget"
                        ).contentType(MediaType.APPLICATION_JSON)
                )
                .andExpect {
                    JSONAssert.assertEquals(
                           widgetPayload(),
                            it.response.contentAsString,
                            false
                    )
                }
    }
}

结果:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is io.mockk.MockKException: no answer found for: WidgetService(com.bondhouse.pms.services.externalportfolios.ExternalPortfoliosService#0 bean#1).getWidget(test)

最佳答案

总是在发布后 3 分钟找出答案......

确保您没有使用 ArgumentMatcher.any() 导入 Mockito 参数匹配器

关于spring-boot - Kotlin Spring WebMvcTest Mockk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58020246/

相关文章:

spring-boot - Spring Boot 中的 Keycloak 管理客户端

kotlin - Kotlin函数重载(varargs与单个参数)

kotlin - 在 Kotlin 中通过委托(delegate)访问委托(delegate)接收者

android - 如何使用 Jetpack Compose AdapterList 保留滚动位置?

spring - Hibernate 返回 PersistentBag 而不是 List

java - 我们可以在Spring Boot中基于​​rest api路径参数实现@Conditional Bean吗?

spring-boot - Spring Boot单元测试中的@SpringBootTest vs @ContextConfiguration vs @Import

javascript - 使用 ng-describe 与 Protractor 进行端到端测试

java - 如何确定哪个测试挂起?

winforms - 界面测试工具?