接受任何数量的协议 somethingLike

Accept any number in pacts somethingLike

在我的客户契约中,我有类似

的规则
{
   foo: like(1.2)
}

我想要的是 foo 是浮点数或整数。然而,在提供者方面,契约测试对整数失败。

我的提供商端 (PHP) 看起来像这样:

myApi() {
   return [
      foo => (float) 1 // Returns 1 in PHP, not 1.0
   ];
}

提供商是否真的需要 return 1.0 而不是 1 或者是否可以用不同的方式编写合同?

不,不需要,因为如果你 var_dump(foo) 相同;然后你会发现它是float类型的。如果该值包含更高的精度或小数点后的值,则它将 return 该浮点值,但对于 1.0、2.0、3.0、4.0、11.0、123.0 .... 即,如果小数点后除 0 外没有其他数字,则,它将始终以单个最高数字输出,即 1,2, 11, 123

参见 https://github.com/pact-foundation/pact-ruby/issues/191 (and other related such as https://github.com/pact-foundation/pact-js/issues/94)。根据反馈和讨论,它现在实际上应该得到框架的支持。

Pact PHP 需要升级到这个底层库的最新版本(它是引擎盖下使用的引擎)并且它 应该可以正常工作