提问者:小点点

使用Spring云合约来测试前端到后端的交互


我想使用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合约进行前端/后端测试,我将不胜感激。


共1个答案

匿名用户

虽然我同意Marcin在评论里说的…

如果你得到404,这意味着WireMock找不到存根。这意味着你的请求

您应该[为每个无效请求]创建另一个合同,其中[a]缺少字段并且

…也许有办法优先作弊一点

您可以为任何命中正确URL返回400的请求创建低优先级合约。这意味着对该URL的每次调用都将返回400。

然后使用正确的参数创建命中正确URL的合约,以返回200和预期响应,并将其优先级设置为高。由于这些合约重叠,优先级确保返回200而不是400。

任何其他URL仍将返回404。

免责声明:我自己并没有真正尝试过。