java—我们使用SpringCloud契约实际测试的是什么?

ffx8fchx  于 2021-07-11  发布在  Java
关注(0)|答案(0)|浏览(260)

正如《Spring的文件》中所说
云契约帮助用户成功实现消费者驱动的契约方法。
我在另一个博客上读到过
契约测试的本质不是Assert功能。我们要实现的是验证语义。如果生产者和消费者能够在生产上成功沟通。
我开始实现它们并在producer端编写代码,我的控制器类是:

@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);
}

我的合同测试基类:

@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);
    }

我的问题是,
1.合同对我的api有什么实际帮助?如果我在模仿服务的底层实现,那么开发人员总是有可能更新源代码中的实际实现,而忘记更新契约。在这种情况下,如果源代码发生更改,契约仍将针对使用模拟服务的生产者运行并通过?这将如何保证api对消费者的稳定性?
2.我们是应该根据输入为api的不同行为创建契约,还是只创建一个正面契约和一个负面契约?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题