Testing 在空手道API中,模拟没有像我预期的那样工作
我正在探索用于集成测试的空手道API double(模拟)。对于下面的场景,我没有得到预期的嘲笑响应。谢谢你的帮助 我的设置: 1.空手道模拟服务器,端口上有pathMatches规则8001:(工作,根据“/cat”和一些测试调用进行验证) 2.我自己的应用程序由docker在端口上启动8080。Docker也暴露了8001端口 模拟案例: 1.我的应用程序REST调用向所有用户公开。这个公开的API调用了其他REST调用,实际上给出了JSON响应。因此,我想模拟底层API调用并相应地验证我的API行为 尝试的步骤: 1.现在,在我的应用程序配置中,我将替换对KarateMock server()的实际底层API调用。然后构建了我的应用程序dockerTesting 在空手道API中,模拟没有像我预期的那样工作,testing,karate,Testing,Karate,我正在探索用于集成测试的空手道API double(模拟)。对于下面的场景,我没有得到预期的嘲笑响应。谢谢你的帮助 我的设置: 1.空手道模拟服务器,端口上有pathMatches规则8001:(工作,根据“/cat”和一些测试调用进行验证) 2.我自己的应用程序由docker在端口上启动8080。Docker也暴露了8001端口 模拟案例: 1.我的应用程序REST调用向所有用户公开。这个公开的API调用了其他REST调用,实际上给出了JSON响应。因此,我想模拟底层API调用并相应地验证我的
感谢这个美妙的框架。这对于编写自动化案例是直观的 空手道无法自动拦截呼叫 建议的方法是,当您在
localhost:8080上启动运行的应用程序时,您可以更改配置,以代替调用http://dev-stg/userservice/v1/findUser
它调用类似http://localhost:8001/v1/findUser
。这是大多数团队所做的,而且很容易,因为您无论如何都应该将外部URL-s定义为application.properties
(或等效)作为最佳实践
在Spring Boot中很容易超越应用程序属性。例如,您可以通过命令行:
如果需要,可以动态地为模拟配置端口。因此,您的单元测试可以首先启动模拟,获取端口,然后启动服务器。您可以在空手道文档中找到详细信息
综上所述,如果您能够在localhost:8080
上的应用程序启动之前更改(系统)HTTP代理,则无需修改配置即可完成此操作。(但这很棘手,所以我推荐上面解释的方法。)因此在这种情况下,空手道实际上可以“截获”应用程序在localhost:8080
上发出的HTTP呼叫
请参见表中最后第二行(5a):空手道无法自动拦截呼叫
建议的方法是,当您在localhost:8080上启动运行的应用程序时,您可以更改配置,以代替调用http://dev-stg/userservice/v1/findUser
它调用类似http://localhost:8001/v1/findUser
。这是大多数团队所做的,而且很容易,因为您无论如何都应该将外部URL-s定义为application.properties
(或等效)作为最佳实践
在Spring Boot中很容易超越应用程序属性。例如,您可以通过命令行:
如果需要,可以动态地为模拟配置端口。因此,您的单元测试可以首先启动模拟,获取端口,然后启动服务器。您可以在空手道文档中找到详细信息
综上所述,如果您能够在localhost:8080
上的应用程序启动之前更改(系统)HTTP代理,则无需修改配置即可完成此操作。(但这很棘手,所以我推荐上面解释的方法。)因此在这种情况下,空手道实际上可以“截获”应用程序在localhost:8080
上发出的HTTP呼叫
见表中最后第二行(5a):