pact - 我应该测试契约(Contract)中的所有枚举值吗?

标签 pact datacontracts pact-java pact-net

我对是否应该考虑某种类型的测试功能或契约(Contract)有疑问。

假设我有一个像/getToolType 这样的 API,它接受一个 {object""myObject"} 作为输入,并以 {type: "[a-z]+"} 的形式返回 type

客户端和服务器之间一致认为返回的类型将匹配一组字符串,比如 [hammer|knife|screwdriver],所以消费者决定在枚举中解析它们,当返回的类型未知时使用回退值。

消费者是否应该为每种类型(锤子、刀子、 Screwdriver )包含一个测试用例,以确保生产者仍然遵守它总是返回的协议(protocol),例如,当使用锤子对象调用/getToolType 时,小写字符串“hammer” ?
或者你会认为这样的测试用例是功能性的吗?为什么?

最佳答案

IMO 的简短回答是“不”。

契约测试对结构更感兴趣,如果我们开始对 API 进行边界测试,我们将进入功能测试 [1] 领域,最好在提供者代码库中完成。您可以使用匹配器来确保仅返回这三个值中的一个,这应确保 Provider 构建不能返回其他值。

我会回应@J_A_X 的评论——没有正确或错误的答案,只是要小心测试输入/输出数据的所有排列。

[1] https://docs.pact.io/best_practices/contract_tests_not_functional_tests.html

关于pact - 我应该测试契约(Contract)中的所有枚举值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43089653/

相关文章:

Pact:如何匹配键匹配正则表达式的对象?

java - Pact 提供者测试的范围应该是什么?

java - 在 Dropwizard 中的不同状态中使用不同的模拟 Pact 提供程序

go - Pact-Go 找不到正在运行的服务器

javascript - 如何使用 pactjs 处理不同环境的不同路径参数

wcf - 服务契约与领域对象

.net - JSON.net 不包括 EmitDefaultValue 为 false 的空属性

serialization - RIA DomainService 不使用 DataContracts 生成客户端代码

javascript - Typescript Pact.io 测试错误 : PopsicleError: Unable to connect to

java - 使用 java 创建 PACT 我无法在正文中设置 numberType 的最小值