我正在探索空手道API双(模拟)的集成测试。对于下面的场景,我没有得到预期的模拟响应。你的帮助将不胜感激。
My安装程序: 1.在端口8001上使用pathMatches规则的空手道模拟服务器:http://localhost:8001 (工作,对"/cat“和一些测试调用进行验证) 2.我自己的应用程序是从端口8080上的对接器上升级的。从码头也暴露了8001端口。
模拟案例: 1.我的应用程序REST调用公开给所有用户http://localhost:8080/service/v1/findUser。这个公开的API,底层调用其他REST调用http://dev-STG/userservice/v1/findUser,它实际上提供了JSON响应。因此,我想模拟底层API调用,并相应地验证我的API行为。
步骤尝试过: 1。现在,在我的应用程序配置中,m替换了对空手道模拟服务器(http://localhost:8001/userservice/v1/findUser)的实际底层API调用。然后构建并提升了我的应用程序对接程序。
在空手道中,我定义了测试,例如调用我的应用程序API "http://localhost:8080/service/v1/findUser“的"testIntgrtn.feature”,并使用路径匹配call(http://localhost:8001/userservice/v1/findUser).
我不明白为什么底层API调用在这里不被嘲笑?我错过了什么吗?此外,在空手道中,我们可以监视所有的休息呼叫(如柏树嘲弄)。
谢谢你这个很棒的框架。这对于编写自动化案例来说是很直观的。
发布于 2020-04-24 17:26:51
空手道不能自动拦截呼叫。
推荐的方法是,当您在localhost:8080
上启动应用程序时,您可以更改配置,这样它就不会调用http://dev-stg/userservice/v1/findUser
,而是调用类似于http://localhost:8001/v1/findUser
的东西。这是大多数团队所做的,而且很容易,因为无论如何,您应该将外部URL定义为application.properties
(或等效的)作为最佳实践。
在Spring中很容易遍历一个应用程序属性--例如,您可以通过命令行:https://stackoverflow.com/a/37053004/143475来完成这个任务。
如果需要,可以动态地为模拟提供一个端口。因此,单元测试可以首先启动模拟,获取端口,然后启动服务器。您可以在空手道文档中找到详细信息。
所有这些都表明,如果您能够在localhost:8080
启动应用程序之前更改(系统) HTTP代理,那么您可以在不修改配置的情况下做到这一点。(但这是一个棘手的问题,因此我建议采用上面解释的方法。)因此,在这种情况下,空手道实际上可以“拦截”localhost:8080
的应用程序发出的传出HTTP调用。
请参见表中的第二行(5a):https://github.com/intuit/karate/tree/master/karate-netty#consumer-provider-example。
https://stackoverflow.com/questions/61413581
复制相似问题