Проблема phpspec при тестировании, если в SplObjectStorage существует объект пророчества
Может кто-нибудь объяснить мне, почему следующий тест не проходит?
Тестируемый код
public function doesItExist( $obj, $dataSet ){
if( $dataSet->contains( $obj ) ){
return true;
}
return false;
}
тест phpspec
function it_should_check_if_it_exists( \stdClass $s ){
$dataSet = new \SplObjectStorage();
$dataSet->attach($s);
$this->doesItExist( $s, $dataSet )->shouldReturn(true);
}
1 ответ
Решение
Если вы проверяете класс $s в it_should_check_if_it_exists() в тесте, это PhpSpec \ Wrapper \ Collaborator, но $obj в doItExist() в теме - Double \ stdClass \ P1. Очевидно, что PHPSpec создает двойное число \ StdClass при передаче в средство сопоставления, поэтому это не тот объект, который вы добавили в \SplObjectStorage.