Принять любое число в договорах - PullRequest
0 голосов
/ 14 января 2020

в моем клиентском пакт-контракте у меня есть такие правила, как

{
   foo: like(1.2)
}

Что я хочу требовать, так это то, что foo является либо float, либо целым числом. Однако на стороне провайдера pact-тесты не выполняются для целых чисел.

Моя сторона провайдера (PHP) выглядит примерно так:

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

Нужно ли провайдеру возвращать 1.0 вместо 1 или можно написать контракт по-другому?

Ответы [ 2 ]

1 голос
/ 15 января 2020

См. https://github.com/pact-foundation/pact-ruby/issues/191 (и другие связанные, например, https://github.com/pact-foundation/pact-js/issues/94). Фактически, теперь он должен поддерживаться платформой, основанной на отзывах и обсуждениях.

Pact PHP необходимо обновить до последней версии этой базовой библиотеки (это движок, используемый под капотом), и он должен просто работать

0 голосов
/ 14 января 2020

Нет, это не нужно, потому что если вы var_dump (foo) то же самое; тогда вы найдете его типа float. Если значение содержит больше точности или значения после десятичных чисел, то оно вернет это значение с плавающей запятой, но для 1.0, 2.0, 3.0,4.0, 11.0, 123.0 .... т.е. если после десятичной дроби нет цифр, отличных от 0, оно всегда будет выведите его в единственном старшем числе, т.е. 1,2, 11, 123

...