java.lang.AssertionError: Status expected:<201> but was:<500>

问题描述

PTAControllerTest.Java

@Test
    public void testCreateProducerTeamAccess() throws Exception {

        String expectedProducerId = "AGT02";

        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNowN_PROPERTIES,false);
        objectMapper.configure(DeserializationFeature.FAIL_ON_IGnorED_PROPERTIES,false);
        
        // Instantiate request DTO
        ProducerTeamAccesspk newProducerTeamAccesspk = new ProducerTeamAccesspk(expectedProducerId,"ATL");
        
        ProducerTeamAccessDto requestProducerTeamAccessDto = createMockProducerTeamAccessDto(newProducerTeamAccesspk);

        ProducerTeamAccess createdProducerTeamAccess = producerTeamAccessMapper.map(requestProducerTeamAccessDto);

        Mockito
                .when(producerService.exists(Mockito.anyString()))
                .thenReturn(true);
        
        Mockito
                .when(producerTeamAccessRepository.findById(ArgumentMatchers.any(ProducerTeamAccesspk.class)))
                .thenReturn(Optional.of(createdProducerTeamAccess));
        
        Mockito
                .when(producerTeamAccessRepository.saveAndFlush(ArgumentMatchers.any(ProducerTeamAccess.class)))
                .thenReturn(createdProducerTeamAccess);

        Mockito
                .donothing()
                .when(messageSender)
                .sendCreated(Mockito.any(BaseDto.class));

        String requestProducerTeamAccessDtoJson = objectMapper.writeValueAsstring(requestProducerTeamAccessDto);

        // remove keys that are not allowed to be set
        DocumentContext doc = JsonPath.parse(requestProducerTeamAccessDtoJson);
        doc.delete("links");
        requestProducerTeamAccessDtoJson = doc.jsonString();

        RequestBuilder request = RestDocumentationRequestBuilders
                .post(controllerPath,expectedProducerId)
                .content(requestProducerTeamAccessDtoJson)
                .contentType(CustomMediaType.APPLICATION_aim_API_V1_JSON_UTF8)
                .accept(CustomMediaType.APPLICATION_aim_API_V1_JSON_UTF8);

        MvcResult result = this.mockmvc
                .perform(request)
                .andExpect(status().isCreated())
                .andDo(document("{method-name}",resourceDetails()
                                .description("To create a new ProducerTeamAccess resource,POST a JSON resource representation to the /producerTeamAccesss endpoint with the content being a single JSON object containing all of the required ProducerTeamAccess fields,and additionally any optional fields. You may include the TeamId field in your request,but it will be ignored,and instead will be saved with the newly created resource ID as assigned by the server. " +
                                        "Upon acceptance and successful processing a request to create a new ProducerTeamAccess resource,the server will respond with a 201 Created and a Location header indicating the URI of the newly created ProducerTeamAccess resource.")
                                .summary("Create a ProducerTeamAccess resource")
                                .requestSchema(Schema.schema("ProducerTeamAccessDto"))
                                .tag(TAG),pathParameters(
                                        parameterWithName("producerId").description("producerId of the ProducerTeamAccess to create")),getRequestProducerTeamAccessDto(false)))
                .andReturn();
        

    }

PTAService.java

public ProducerTeamAccessDto save(String producerId,ProducerTeamAccessCreateDto producerTeamAccessCreateDto) {

        this.validate(producerId,producerTeamAccessCreateDto);

        ProducerTeamAccess ProducerTeamAccesstoSave = producerTeamAccessMapper.mapFromCreateDto(producerTeamAccessCreateDto);

        ProducerTeamAccesstoSave.setProducerId(producerId);

        ProducerTeamAccesstoSave.setCreatedById(UserSession.getUserId());
        ProducerTeamAccesstoSave.setDateAdded(Date.Now());
        ProducerTeamAccesstoSave.setModifiedById(UserSession.getUserId());
        ProducerTeamAccesstoSave.setDateModified(Date.Now());

        ProducerTeamAccess newProducerTeamAccess = ProducerTeamAccessRepository.saveAndFlush(ProducerTeamAccesstoSave);

        return producerTeamAccessMapper.map(newProducerTeamAccess);
    }

public ResponseEntity<Void> createProducerTeamAccess(
            @PathVariable("producerId") String producerId,@RequestBody ProducerTeamAccessCreateDto producerTeamAccessCreateDto,UriComponentsBuilder ucBuilder) {

        logger.info("Creating ProducerTeamAccess.");
        
        ProducerTeamAccessDto newProducerTeamAccessDto = producerTeamAccessService.save(producerId,producerTeamAccessCreateDto);
        
        try {
            messageSender.sendCreated(newProducerTeamAccessDto);
        }
        catch (Exception e) {
            logger.error("Exception occured while sending the ProducerTeamAccess create message to the Queue");
        }   
        // redirect to newly created ProducerTeamAccess record
        HttpHeaders headers = new HttpHeaders();
        headers.setLocation(ucBuilder.path(controllerPath + "/{teamId}").buildAndExpand(newProducerTeamAccessDto.getTeamId()).toUri());
        return new ResponseEntity<Void>(headers,HttpStatus.CREATED);   
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)