首页 > 解决方案 > 使用响应式 WebTestClient 状态测试 Junit 的断言错误预期:201 实际:404

问题描述

@ExtendWith(SpringExtension.class)
@WebFluxTest(controllers = EventsControllerTest.class)
类 EventsControllerTest {
@MockBean UserRepo repo;
@Autowired
私有 WebTestClient webClient;

@Test
void testAssignUserRoles() {
    UserInfo user = new UserInfo();
    user.setId(Long.valueOf(1));
    user.setFirstname("Test");
    user.setLastname("Test2");
    user.setActiveuser(true);
    user.setEmailid("tet@test.com");
    user.setRolename("test");
    user.setUserpassword("test");
    Mockito.when(repo.save(user)).thenReturn(Mono.just(user));
    webClient.post().uri("/assignRoles").contentType(MediaType.APPLICATION_JSON)
        .body(BodyInserters.fromObject(user)).exchange().expectStatus().isCreated();
    Mockito.verify(repo, times(1)).save(user);
}

控制器
@RestController
公共类 EventsController {
@Autowired
UserInfoRepository userInfoRepository;

@PostMapping(value = "/saveRole")
public Mono<UserInfo> assignUserRoles(@RequestBody UserInfo userInfo) {
    return userInfoRepository.save(userInfo).log();
}

标签: reactive-programmingjunit5webtestclient

解决方案


访问 URI 应与@PostMapping:的值属性匹配saveRole


推荐阅读