我正在开发一个具有某些Public API的静态C ++库。 我必须为该库提供的API实现消费者驱动的合同。 但就我而言,我必须将合同提供给将要达成共识的消费者。
实施基于合同的测试的灵感来自PACT(https://docs.pact.io/)。 PACT中的合同采用JSON文件形式,主要基于REST和http响应。
如果我必须对C ++ API实施基于合同的测试。那么最好的方法是什么。我可以看到Boost具有“按合同设计”功能,但它更像是断言,但在PACT这样的文件中没有定义合同。 (https://www.boost.org/doc/libs/develop/libs/contract/doc/html/index.html)
是否可以通过任何方式在文件中定义合同并可以测试所有API。这样做的主要目的是进行隔离测试。
请您分享一些输入信息以实施文件中定义的合同,并为这些合同编写测试程序。
答案 0 :(得分:1)
我必须为库提供的API实施消费者驱动的合同。 但就我而言,我必须将合同提供给将要达成共识的消费者。
这两个语句彼此不兼容。根据合同的性质向消费者提供合同 不能由消费者决定。
无论如何,如果您想确保双方都生成并验证了合同,则Pact当前不支持C ++,但这并不意味着您不能使用它。
请参阅以下链接,以使用Pact工具测试消费者和提供方:
如果您正在执行提供商驱动的合同,并且不希望知道消费者本身是否兼容,则可以考虑使用Swagger(OpenAPI Spec)之类的方法来定义API,然后使用Dredd之类的工具来查看其是否匹配