只是想了解协议。我们使用的是 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。我认为可能有另一种方法可以做到这一点。