Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们使用Spring云契约实际测试的是什么?_Java_Mockito_Spring Cloud Contract - Fatal编程技术网

Java 我们使用Spring云契约实际测试的是什么?

Java 我们使用Spring云契约实际测试的是什么?,java,mockito,spring-cloud-contract,Java,Mockito,Spring Cloud Contract,正如文件中所述 云合约有助于用户成功实施消费者协议 驱动契约方法 我在另一个博客上读到了这篇文章 契约测试的本质不是断言功能。我们想要实现的是验证语义。如果生产者和消费者能够在生产过程中成功沟通 我开始实现它们,并在生产者端编写代码, 我的控制器类是: @PostMapping(path = "/getone", consumes = "application/json", produces = "application/json")

正如文件中所述

云合约有助于用户成功实施消费者协议 驱动契约方法

我在另一个博客上读到了这篇文章

契约测试的本质不是断言功能。我们想要实现的是验证语义。如果生产者和消费者能够在生产过程中成功沟通

我开始实现它们,并在生产者端编写代码, 我的控制器类是:

 @PostMapping(path = "/getone", consumes = "application/json", produces = "application/json")
public ResponseEntity<Response> getone(@RequestBody Test[] test) {
    String appId = Utils.getId();
    return new ResponseEntity<>(service.pub(test,id), HttpStatus.OK);
}
我的问题是,

1.合同对我的API有何实际帮助?如果我在模仿我的服务的底层实现,那么开发人员总是可能在源代码中更新实际实现,而忘记更新契约。在这种情况下,合同仍然会针对使用模拟服务的生产者运行,并且如果源代码发生更改,合同会通过吗?这将如何保证API对消费者的稳定性


2.我们应该根据输入为API的不同行为创建契约,还是只为积极案例创建一个契约,为消极案例创建一个契约?

您可以在文档中阅读更多关于入门的信息,嘿@MarcinGrzejszczak我确实浏览了文档,但我想更好地理解……如果有人可以的话澄清问题,这将非常好:)我确实找到了问题第二部分的答案,即“我们假设您将创建两个契约,一个用于正面案例,一个用于负面案例。契约测试用于测试应用程序之间的契约,而不是模拟完整的行为。”
@ExtendWith(SpringExtension.class)
@ActiveProfiles("test")
@SpringBootTest
public class ContractTest {
    
    @Mock 
    private Service service;

    @Mock
    private Utils utils;

    @BeforeEach
    void static setup(@Autowired Controller controller) {
        try (MockedStatic mocked = mockStatic(Utils.class)) {
            mocked.when(() -> Utils.getId()).thenReturn("194");
            Mockito.when(service.pub(anyString(),anyString())).thenReturn(TestUtils.publish_success_response());
            controller.setPublishService(service);
            StandaloneMockMvcBuilder standaloneMockMvcBuilder = MockMvcBuilders.standaloneSetup(controller);
            RestAssuredMockMvc.standaloneSetup(standaloneMockMvcBuilder);
    }