Проблема 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.

Другие вопросы по тегам