- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的单元测试失败。我正在打印请求和响应,并且可以确认 MockRestServiceServer 在调用端点时返回模拟的 JSON。当我将测试更改为直接与服务器通信时,单元测试通过。不知道我做错了什么
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = {Application.class, Beans.class})
public class BillingSystemClientImplTest {
private MockRestServiceServer mockServer;
@Autowired
private RestTemplate restTemplate;
@Autowired
private Properties properties;
@Autowired
private BillingSystemClient client;
@Before
public void setUp() {
mockServer = MockRestServiceServer.createServer(restTemplate);
}
@Test
public void testGetAccount() throws Exception {
Resource resource = new ClassPathResource("/account.json", getClass());
UriComponents uri = UriComponentsBuilder.fromUriString(properties.getAccountResource())
.buildAndExpand("53737803");
mockServer.expect(requestTo(uri.toUriString()))
.andExpect(method(HttpMethod.GET))
.andRespond(withSuccess(resource, MediaType.APPLICATION_JSON));
AccountResponse response = client.getAccount("53737803");
Assert.assertNotNull(response.getAccountNumber());
mockServer.verify();
}
}
response = restTemplate.getForObject(uriComponents.toUri(), AccountResponse.class);
java.lang.NullPointerException
at com.something.ws.client.BillingSystemClientImplTest.testGetAccount(BillingSystemClientImplTest.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:254)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:193)
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
BufferingClientHttpRequestFactory bufferingClientHttpRequestFactory = new BufferingClientHttpRequestFactory(requestFactory);
requestFactory.setOutputStreaming(false);
RestTemplate restTemplate = new RestTemplate();
restTemplate.getInterceptors().add(mpxLoggingRequestInterceptor());
restTemplate.setErrorHandler(mpxErrorHandler());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory()));
restTemplate.getInterceptors().add(new GenericRequestInterceptor());
restTemplate.setRequestFactory(bufferingClientHttpRequestFactory);
最佳答案
您需要启用响应正文的重复读取,因此在创建 MockRestServiceServer 时调用 bufferContent() 如下:
mockServer = MockRestServiceServer
.bindTo(restTemplate)
.ignoreExpectOrder(true)
.bufferContent()
.build();
关于unit-testing - 使用 ClientHttpRequestInterceptor 对 Rest 客户端进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39914325/
我的 Spring Boot 应用程序中有下面列出的loggingInterceptor。每当调用 REST 服务时都会调用此拦截器。我看到前 2 个 sysout 语句立即打印,第三个 sysout
我已经为我的自定义日志拦截器完成了以下操作 public class HttpLoggingInterceptor implements ClientHttpRequestInterceptor {
我想使用拦截器将授权 header 添加到通过休息模板发出的每个请求中。我这样做是这样的: public FirebaseCloudMessagingRestTemplate(@Autowired R
我将多个 ClientHttpRequestInterceptor 设置为 RestTemplate (CommonRestTemplateBuilder) 的常用配置,其中之一是 LogReques
我正在将消息级加密 (MLE) 添加到用于传出请求的现有代码库中。为此,我简单地编写了一个拦截器,它将捕获传出的请求,加密它们的主体,然后将请求发送出去。我们得到的响应也是加密的,必须解密。这一切对我
假设我有以下 2 ClientHttpRequestInterceptor s: public class RequestLoggerInterceptor implements ClientHttp
我正在使用 ClientHttpRequestInterceptor 报告 RestTemplate 的请求输出和响应输入。如果出现异常,我需要记录响应,假设模板是否试图用错误的类取消响应。 这是拦截
下面的单元测试失败。我正在打印请求和响应,并且可以确认 MockRestServiceServer 在调用端点时返回模拟的 JSON。当我将测试更改为直接与服务器通信时,单元测试通过。不知道我做错了什
所以我有以下场景要使用 Spring boot rest template 来实现消耗 REST-API (涉及token认证机制)。为了执行测试,我在 Spring Boot 中创建了简单的模拟 R
我需要在所有 RestTemplate 客户端请求中添加一个自定义 header 。所以我实现了 ClientHttpRequestInterceptor。然后我在我的 RestTemplateBui
我使用 @Autowired 访问 Spring MVC Controller 中的 session ,如下所示: @Autowired private HttpSession session; 问题
我正在尝试使用休息服务并且我正在发布一些数据,使用 Spring RestTemplate postForObjectMethod 但是我得到了一个空响应,即使我可以在有效负载中看到请求和响应。 [更
我是一名优秀的程序员,十分优秀!