0

只是想了解协议。我们使用的是 spring boot,所以我很自然地尝试使用 pact-jvm-provider-spring-mvc 进行简单设置。我的协议文件很简单 { "consumer": { "name": "MyConsumer" }, "provider": { "name": "MyProvider" }, "interactions": [ { "description": "a request for projects", "providerState": "i have a list of projects", "request": { "method": "GET", "path": "/dogs", "headers": { "Accept": "application/json" } }, "response": { "status": 200, "headers": { "Content-Type": "application/json" }, "body": [ { "dog": "1" } ] } } ], "metadata": { "pactSpecification": { "version": "2.0.0" } } } ,我将这些依赖项添加到我的 gradle 构建中:

```

testCompile 组:'com.reagroup',名称:'pact-jvm-provider-spring-mvc_2.10',版本:'0.4.0' testCompile 组:'au.com.dius',名称:'pact-jvm- provider_2.10',版本:'2.4.18' testCompile 组:'au.com.dius',名称:'pact-jvm-provider-junit_2.11',版本:'3.4.1'```

测试类并没有做太多的事情,只是以 spring 的方式创建了一个控制器。

但我从运行中得到的是

```

org.json4s.package$MappingException:不支持在函数体中定义的案例类。

at org.json4s.reflect.package$.fail(package.scala:96)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder$$anonfun$9.apply(Reflector.scala:115)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder$$anonfun$9.apply(Reflector.scala:115)
at scala.util.control.Exception$Catch$$anon$2.apply(Exception.scala:137)
at scala.util.control.Exception$Catch$$anon$2.apply(Exception.scala:135)
at scala.util.control.Exception$Catch.apply(Exception.scala:106)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder.constructorsAndCompanion(Reflector.scala:115)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder.result(Reflector.scala:156)
at org.json4s.reflect.Reflector$.createDescriptor(Reflector.scala:50)
at org.json4s.reflect.Reflector$$anonfun$describe$1.apply(Reflector.scala:44)
at org.json4s.reflect.Reflector$$anonfun$describe$1.apply(Reflector.scala:44)
at org.json4s.reflect.package$Memo.apply(package.scala:39)
at org.json4s.reflect.Reflector$.describe(Reflector.scala:44)
at org.json4s.Extraction$.extract(Extraction.scala:330)

```

这似乎是已解决的底层 jar 文件中的错误。但我只是想知道这是否是正确的方法,我可以简单地为 json4s 增加 jar 版本吗?pact-jvm-provider-spring-mvc有一阵子没动过,0.5.0 版本也没出过。再次注意,我不需要 spring-mvc。我只想针对我的 rest api 测试 Pact。我认为可能有另一种方法可以做到这一点。

4

1 回答 1

0

确保请求正文与 api 所期望的相符。

在这种情况下,我遇到了类似的错误(但来自杰克逊)。

于 2017-08-07T10:27:04.197 回答