我有一个使用Feign客户端的类。之前我使用Mockito并为Feign客户端中的每个方法调用给出了一个存储响应。现在我想使用WireMock,以便我可以看到我的代码正确处理了不同类型的响应代码。我如何去做这件事?我无法弄清楚如何在测试中连接我的Feign客户端,并将它连接起来,以便它使用Wiremock而不是我在我的application.yml
文件中设置的URL。任何指针将不胜感激。如何在Spring Boot应用程序的Feign客户端上使用WireMock?
7
A
回答
3
也许你想在这个项目https://github.com/ePages-de/restdocs-wiremock
这可以帮助您生成并在Spring MVC的测试发布wiremock片段看(用弹簧REST的文档)。
最后,您可以使用这些片段来启动一个线连接服务器,以便在测试中提供这些记录的请求。
如果您回避这个集成解决方案,您可以使用Wiremock JUnit规则在测试期间触发您的电线连接服务器。 http://wiremock.org/docs/junit-rule/
下面是一个使用动态wiremock端口,并配置色带使用该端口进行了抽样检测:(您使用的假死和色带?)
@WebAppConfiguration
@RunWith(SpringRunner.class)
@SpringBootTest()
@ActiveProfiles({"test","wiremock"})
public class ServiceClientIntegrationTest {
@Autowired //this is the FeignClient service interface
public ServiceClient serviceClient;
@ClassRule
public static WireMockRule WIREMOCK = new WireMockRule(
wireMockConfig().fileSource(new ClasspathFileSource("path/to/wiremock/snipptes")).dynamicPort());
@Test
public void createSome() {
ServiceClient.Some t = serviceClient.someOperation(new Some("some"));
assertTrue(t.getId() > 0);
}
//using dynamic ports requires to configure the ribbon server list accordingly
@Profile("wiremock")
@Configuration
public static class TestConfiguration {
@Bean
public ServerList<Server> ribbonServerList() {
return new StaticServerList<>(new Server("localhost", WIREMOCK.port()));
}
}
}
相关问题
- 1. 如何将spring-boot作为客户端应用程序运行?
- 2. 如何微调Spring Cloud Feign客户端?
- 3. 如何使用swagger-codegen-maven-plugin生成spring cloud feign客户端
- 4. 如何在Jelastic上使用PostgreSQL托管Spring Boot应用程序?
- 5. 我可以使用Multipart参数生成Spring Feign客户端吗?
- 6. 如何在客户端应用程序
- 7. 在端口80上的Spring Boot运行应用程序
- 8. 在Spring MVC上部署客户端/服务器应用程序
- 9. 使用Griffon和Spring的客户端 - 服务器应用程序
- 10. 使用Spring AMQP的Web应用程序是一个客户端?
- 11. Feign客户端包装
- 12. Feign客户端自定义oauth2响应
- 13. 如何在客户端使用Spring Boot Security禁用证书验证
- 14. 如何在Spring Web应用程序中配置Netty客户端处理程序
- 15. 如何在Spring Boot应用程序中使用lombok.Data注释?
- 16. 如何在Spring Boot应用程序中使用Angular2 PathLocationStrategy?
- 17. 如何在JUnitTests中使用ObjectMapper - Spring Boot应用程序
- 18. Feign客户端执行失败:java.lang.reflect.InvocationTargetException
- 19. 如何在ASP.NET应用程序中使用WCF客户端?
- 20. 如何在MVC应用程序中使用Singleton Signalr客户端
- 21. 如何使用WebStorm在客户端调试Meteor应用程序?
- 22. 如何仅在客户端应用程序中使用SynchronizationContext
- 23. 如何在WCF中使用客户端应用程序服务?
- 24. 如何使用客户端PC上的Web应用程序访问UDP端口?
- 25. 尝试使用Oauth2令牌与feign客户端和hystrix
- 26. 如何在Weblogic 12c(12.1.3)上部署Spring Boot应用程序?
- 27. 如何在客户端网站上嵌入nodejs应用程序?
- 28. 如何使用Swagger记录Spring Boot web应用程序的RestController?
- 29. 如何使用应用程序客户端的登录回调
- 30. 当客户端服务中的Feign客户端使用时,Spring Data Rest Hateoas Resources对象为空
感谢您的回答!我没有使用丝带 - 只有假装。我使用'@ FeignClient'和'url = externalApiUrl'。我怎样才能在那里注入wiremock url呢? – L42
wiremock实际上是运行一个服务器,所以只要确保FeignClient指向'localhost:WIREMOCK.port'即可。我不确定url是否可以指向配置属性。它似乎并不支持春天的表达。在类似的问题,有一个动态feign网址接受的答案建议使用功能区和上面的测试使用的配置机制。 http://stackoverflow.com/a/29278126/5371736 –
在经历了很多与春季版本的斗争之后,我认为我更接近了。但是,我的自动装配假客户端被设置为“空”。你知道这是为什么吗?我目前的计划是尝试在@SpringBootTest中将连线URL设置为属性,以便假装客户端(如果不为null)将进入连线模式。 – L42