- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在为 Controller 运行 junit 时遇到以下错误。我已经将内容类型设置为 Json,错误仍然相同。任何建议可能是什么问题?
错误是
java.lang.AssertionError: expectation "expectNext({response=employee saved Successfully})" failed (expected: onNext({response=employee saved Successfully}); actual: onError(org.springframework.web.reactive.function.UnsupportedMediaTypeException: Content type 'application/octet-stream' not supported for bodyType=java.util.Map<java.lang.String, java.lang.String>))
Controller 是
@Slf4j
@Controller
@RequiredArgsConstructor
public class EmployeeController {
private final EmployeeService employeeService;
@PostMapping(path ="/employees",produces = APPLICATION_JSON_VALUE)
public @ResponseBody Mono<Map<String, String>> saveEmployees(@RequestBody List<EmployeeDto> employeeDtos) {
log.info("Received request to save employees [{}]", employeeDtos);
return employeeService.saveEmployee(employeeDtos);
}
}
服务等级如下:
@Service
@Slf4j
@RequiredArgsConstructor
public class EmployeeService {
private final WebClient webClient;
public Mono<Map<String, String>> saveEmployees(List<EmployeeDto> employeeDtos) {
return webClient
.post()
.uri("/create-employees")
.contentType(APPLICATION_JSON)
.bodyValue(employeeDtos)
.retrieve()
.bodyToMono(new ParameterizedTypeReference<Map<String, String>>() {
})
.doOnError(e -> log.error("Failed to save employees {}: {}", employeeDtos, e));
Junit如下:
@Slf4j
@SpringBootTest
class EmployeeServiceTest {
private static final WireMockServer wireMockServer = new WireMockServer(wireMockConfig().dynamicPort());
@Autowired
private ObjectMapper objectMapper;
@Autowired
private EmployeeService employeeService;
@Test
void shouldMakeAPostApiCallToSaveEmployee() throws JsonProcessingException {
var actualemployeeDtos = "....";
var randomEmployeeDto = ...;
wireMockServer.stubFor(post("/create-employees")
.withHeader(CONTENT_TYPE, equalTo(APPLICATION_JSON_VALUE))
.withHeader(ACCEPT, containing(APPLICATION_JSON_VALUE))
.withRequestBody(equalToJson(actualemployeeDtos))
.willReturn(aResponse()
.withStatus(OK.value())
.withBody("{\"response\": \"employee saved Successfully\"}")));
StepVerifier
.create(employeeService.saveEmployee(List.of(randomEmployeeDto)))
.expectNext(singletonMap("response", "employee saved Successfully"))
.verifyComplete();
}
}
最佳答案
经过调试,我发现连响应头都需要设置内容类型,因为 BodyExtractors 类的 readWithMessageReaders() 方法检查内容类型。
.withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)
在下面的代码中设置修复了失败的测试用例
@Test
void shouldMakeAPostApiCallToSaveEmployee() throws JsonProcessingException {
var actualemployeeDtos = "....";
var randomEmployeeDto = ...;
wireMockServer.stubFor(post("/create-employees")
.withHeader(CONTENT_TYPE, equalTo(APPLICATION_JSON_VALUE))
.withHeader(ACCEPT, containing(APPLICATION_JSON_VALUE))
.withRequestBody(equalToJson(actualemployeeDtos))
.willReturn(aResponse()
.withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)
.withStatus(OK.value())
.withBody("{\"response\": \"Employees saved Successfully\"}")));
StepVerifier
.create(employeeService.saveEmployee(List.of(randomEmployeeDto)))
.expectNext(singletonMap("response", "Employees saved Successfully"))
.verifyComplete();
}
关于java - UnsupportedMediaTypeException : Content type 'application/octet-stream' not supported for bodyType=java. util.Map<java.lang.String, java.lang.String>)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66882714/
我正在使用 spring-webflux并想上传文件.... 一切都很好,只需 spring-web但是说到webflux我不知道出了什么问题。 小心差异......我正在使用:
我们开发 Java (Java EE) 应用程序,并生成 XML 文件,以便将它们发送到远程 .NET 应用程序,并在其一侧读取 MSMQ。XML 文件由 JDom 生成,如下所示: // add e
我有一段时间编写的客户端使用旧库并调用 GetBody()接收消息时读取正文。 现在我有了新客户 Microsoft.Azure.ServiceBus (发送消息)据我所知总是使用 Stream .
创建了一个 REST Web 服务(服务 1),它尝试使用另一个返回 Content-Type =“text/html;charset=utf-8”的服务(服务 2) 我的 WebClient 代码使
使用 Java 11、SpringBoot 2、WebFlux、WebClient 和 Jackson 尝试使用 Spring WebClient 来使用返回 XML 的 Web 服务端点,内容类型:
我正在使用@RequestPart注释来上传一些参数和图像文件。 但是我遇到了以下错误 Content type 'image/jpeg' not supported for bodyType=org
我在为 Controller 运行 junit 时遇到以下错误。我已经将内容类型设置为 Json,错误仍然相同。任何建议可能是什么问题? 错误是 java.lang.AssertionError: e
我是一名优秀的程序员,十分优秀!