与泽西岛的春云合同

时间:2016-12-17 12:46:39

标签: spring spring-boot jersey spring-cloud spring-cloud-contract

我有一个简单的项目Spring启动项目。它包含一个基于Jersey的控制器:     @Path("人&#34)     @Produces(MediaType.APPLICATION_JSON)     公共类PersonsController {

    @GET
    public Person get() {
        return new Person("James", 20);
    }
}

按预期返回json响应(url:http://localhost:PORT/persons):

{
  "name": "James",
  "age": 20
}

我的目标是为此控制器添加Spring Cloud Contract测试。我添加了所有必需的mvn配置,并测试:

public class MvcTest {
    @Before
    public void setup() {
        RestAssuredMockMvc.standaloneSetup(new PersonsController());
    }
}

这是合约(groovy文件): import org.springframework.cloud.contract.spec.Contract

Contract.make {
    request {
        method 'GET'
        url('persons')
    }
    response {
        status 200
        body(
                "name": "James",
                "age": 20
        )
    }
}

当我运行mvn clean package以下错误时,将始终返回: 测试失败:

  ContractVerifierTest.validate_getTest:26 expected:<[200]> but was:<[404]>

我认为这应该与ServletDispatcher相关,因为它没有看到Jersey的路径。将@Path替换为@RequestMapping的同一项目有效。但是,我需要让它与泽西岛合作。 我错过了什么吗?