Сбой сопоставления Phpspec с объектом stdClass
Работа с приложением laravel 5 и проблема с phpspec. Почему мой тестовый модуль Phpspec, приведенный ниже, не проходит, или, точнее, как я могу заставить ключи объекта stdClass соответствовать, чтобы он не потерпел неудачу?
Мой файл спецификаций:
function it_checks_add_starting_date_to_flow()
{
$dealflows = new \stdClass ();
this->add_starting_date_to_flow($dealflows)->shouldReturn((object)[]);
}
И моя вспомогательная функция, которую я тестирую:
public static function add_starting_date_to_flow($dealflows)
{
$dealflows= new \stdClass();
return $dealflows;
}
Из phpspec я получаю следующий ответ:
App/ библиотеки / Mmdealhelpers
65 - он проверяет добавление даты начала к ожидаемому потоку [obj:stdClass], но получил [obj:stdClass].
@@ -1,1 +1,1 @@
-stdClass Object &000000001d025295000000007dd68060 ()
+stdClass Object &000000001d02529a000000007dd68060 ()
80 // ]
81 // ));
82 $this->add_starting_date_to_flow($dealflows)->shouldReturn((object)[]);
83
84 }
85
0 vendor/phpspec/phpspec/src/PhpSpec/Matcher/IdentityMatcher.php:78
throw new PhpSpec\Exception\Example\NotEqualException("Expected [obj:stdC...")
1 [internal]
spec\App\libraries\MmdealhelpersSpec->it_checks_add_starting_date_to_flow()
1 ответ
shouldReturn() вызывает совпадение идентификаторов, которое использует строгое сравнение. Ваша спецификация не работает, так как ожидаемый объект не совпадает с экземпляром, возвращаемым методом.
Вместо этого используйте сопоставитель сравнения. Он использует слабое сравнение и может быть вызван с помощью shouldBeLike ():
function it_checks_add_starting_date_to_flow()
{
$dealflows = new \stdClass();
$this->add_starting_date_to_flow($dealflows)->shouldBeLike((object)[]);
}