提问者:小点点

Spring云合同-使用请求的body作为响应体


在使用此合约的Spring Cloud合约(v1.2.5)中:

    Contract.make {
        description "update sthg"
        request {
            method PUT()
            url value($(consumer('/path/to/sthg'),
                    producer(execute('somePutPathPath(0,\"xxx\")'))))
            body(producer(
                    file('files/givens/my-body.json')
            ))
        }
        response {
            status 200
            headers {
                contentType(applicationJson())
            }
            body(fromRequest().body())
        }
    }

生成测试时出现错误

 org.springframework.cloud:spring-cloud-contract-maven-plugin:1.2.5.RELEASE:generateTests failed:net.minidev.json.parser.ParseException: Unexpected character ({) at position 1. -> [Help 1]

但是如果我使用: body(一些道具:fromRequest().body())一切都很好

    Contract.make {
        description "update sthg"
        request {
            method PUT()
            url value($(consumer('/path/to/sthg'),
                    producer(execute('somePutPathPath(0,\"xxx\")'))))
            body(producer(
                    file('files/givens/my-body.json')
            ))
        }
        response {
            status 200
            headers {
                contentType(applicationJson())
            }
            body(someProp: fromRequest().body())
        }
    }

如何将主体响应设置为请求的主体。


共1个答案

匿名用户

我通过使用request. getBody()而不是:body(fromRequest().body())解决了这个问题

  body($(
            c(request.getBody()),
            p(file('some.json'))
    ))