gpt4 book ai didi

spring-cloud - Spring Cloud 合约 : Generated test doesn't have MockMVC configured and fails compile

转载 作者:行者123 更新时间:2023-12-04 04:01:32 29 4
gpt4 key购买 nike

我遇到了“您尚未配置 MockMVC 实例”的问题。 “mvn全新安装”时的异常。

运行

org.springframework.cloud.contract.verifier.tests.ContractVerifierTest
测试运行:1,失败:0,错误:1,跳过:0,耗时:0.185 秒 <<< 失败! - 在 org.springframework.cloud.contract.verifier.tests.ContractVerifierTest 中
validate_shouldGetAmenities(org.springframework.cloud.contract.verifier.tests.ContractVerifierTest) 已用时间:0.184 秒 <<< 错误!
java.lang.IllegalStateException:您尚未配置 MockMVC 实例。你可以静态地做到这一点

或使用 DSL:

给定()。
模拟Mvc(..)。 ..

问题是,抛出此异常的测试是基于合约生成的测试。

这是契约(Contract)。

package contracts

org.springframework.cloud.contract.spec.Contract.make {
request {
method 'GET'
url '/abc/def/serviceA?catalog=x'
body("")
}
response {
status 200
body(""
)
headers {
contentType(applicationJsonUtf8())
}
}
}

这是生成的测试。
package org.springframework.cloud.contract.verifier.tests;

public class ContractVerifierTest {

@Test
public void validate_shouldGetMyStuff() throws Exception {
// given:
MockMvcRequestSpecification request = given()
.body("\"\"");

// when:
ResponseOptions response = given().spec(request)
.get("/abc/def/serviceA?catalog=x");

// then:
assertThat(response.statusCode()).isEqualTo(200);
assertThat(response.header("Content-Type")).matches("application/json;charset=UTF-8.*");
// and:
String responseBody = response.getBody().asString();
assertThat(responseBody).isEqualTo("");
}

}

显然,在生成的测试中没有启动 MockMVC 实例。异常消息中的建议是在测试中启动它。但是,它是一个生成的测试(在“目标”文件夹下)。我在那里添加什么并不重要,它会在“mvn clean install”之后消失。

有没有人遇到过这个?我的契约(Contract)错了吗?这就是为什么它没有在生成的测试中生成MockMVC启动部分的原因?

另一个问题是契约(Contract)中的 URL 是一个简单的 get。它确实以 Json 格式返回一条消息。但是现在,我只想通过仅验证状态代码 200 而不检查消息来使其变得非常简单。

关于这个 URL 的另一件事是我在 postman 中尝试了这个 url 并得到了回应。我认为这应该是我在契约(Contract)中使用的网址。这个假设是错误的吗?我需要在契约(Contract)中以不同的方式形成这个网址吗?

此外,在 postman 中,当我使用此网址请求此“GET”时,“正文”中没有任何内容。这就是为什么我将契约(Contract)中的“body”留为空(“”)。这是正确的做法吗?这会影响生成的测试吗?

任何提示将不胜感激。
at   com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.performRequest(MockMvcRequestSenderImpl.java:101)
at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.sendRequest(MockMvcRequestSenderImpl.java:296)
at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.get(MockMvcRequestSenderImpl.java:367)
at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.get(MockMvcRequestSenderImpl.java:47)
at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSpecificationImpl.get(MockMvcRequestSpecificationImpl.java:565)
at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSpecificationImpl.get(MockMvcRequestSpecificationImpl.java:42)
at
org.springframework.cloud.contract.verifier.tests.ContractVerifierTest.validate_shouldGetAmenities(ContractVerifierTest.java:23)

最佳答案

事实证明,我需要在示例中添加我缺少的基类(如 FraudBase.java)。这就是 MockMvc 被实例化的地方。

关于spring-cloud - Spring Cloud 合约 : Generated test doesn't have MockMVC configured and fails compile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42405945/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com