正如《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的不同行为创建契约,还是只创建一个正面契约和一个负面契约?
暂无答案!
目前还没有任何答案,快来回答吧!