我想使用Spring Cloud合约(https://spring.io/projects/spring-cloud-contract)来测试前端到后端的交互:特别是捕获诸如400
超文本传输协议错误之类的错误。
我能够使用Spring Cloud合约存根运行器运行我的存根。但是我注意到,当实际后端返回400
时,正在运行的存根返回404
未找到错误。
这是我的合同:
description: |
Signup use case
```
given:
a user signs up
when:
the sign up request is valid
then:
the user is signed up
```
request:
method: POST
url: /api/signup
body:
userAccountType: PARENTS
email: john@example.com
firstName: John
plainPassword: secret
address:
placeId: 'an_id'
description: '10 Downing Street'
headers:
Content-Type: application/json
response:
status: 200
如果我的前端(即Angular)只是发出一个HttpPOST
,比如说缺少email
字段,那么我希望运行的存根返回400
。
如果有人可以分享最佳实践或技巧,以便更好地利用Spring Cloud合约进行前端/后端测试,我将不胜感激。
虽然我同意Marcin在评论里说的…
如果你得到404,这意味着WireMock找不到存根。这意味着你的请求
您应该[为每个无效请求]创建另一个合同,其中[a]缺少字段并且
…也许有办法优先作弊一点
您可以为任何命中正确URL返回400的请求创建低优先级合约。这意味着对该URL的每次调用都将返回400。
然后使用正确的参数创建命中正确URL的合约,以返回200和预期响应,并将其优先级设置为高。由于这些合约重叠,优先级确保返回200而不是400。
任何其他URL仍将返回404。
免责声明:我自己并没有真正尝试过。