PHPSpec — проверьте, возвращает ли метод файл

Я новичок в phpspec, и я пытаюсь проверить, возвращает ли метод файл. Метод по существу:

public function getFile(){
    return file_get_contents('myFile.pdf');
}

Итак, сначала я должен был проверить, возвращает ли getFile() строку, поскольку file_get_contents возвращает строку в соответствии с документами.

Итак, мой тест выглядит так:

$this->getFile()->shouldHaveType("string");

Но мой тест завершается со следующим сообщением:

expected an instance of string, but got "%PDF-1.4"....

Я даже пробовал gettype(getFile()), и он возвращает "string".

Может ли кто-нибудь сказать мне, что я делаю неправильно.


person Bradley Trager    schedule 18.03.2014    source источник
comment
вам нужно сначала использовать gettype(getFile()), а затем проверить его   -  person Jason OOO    schedule 19.03.2014
comment
Я уже пробовал это, и он возвращает строку   -  person Bradley Trager    schedule 19.03.2014
comment
у тебя такая же ошибка?   -  person Jason OOO    schedule 19.03.2014
comment
Ваш метод не возвращает файл. Он возвращает некоторую строку.   -  person zerkms    schedule 19.03.2014
comment
Да, я знаю это. И это то, что я пытаюсь проверить - строку.   -  person Bradley Trager    schedule 19.03.2014
comment
(null !== $subject) && ($subject instanceof $arguments[0]); --- вот как проверяется тип между прочим (в исходниках phpspec)   -  person zerkms    schedule 19.03.2014
comment
Никогда не использовал phpspec, но, согласно его источнику, вам нужно использовать ScalarMatcher. Так наверное ->beScalar('string') может быть?   -  person zerkms    schedule 19.03.2014


Ответы (1)


Вы проверяете тип класса. Но вы действительно хотите проверить, имеют ли возвращаемые данные строковый тип. @zerkms верен. Вы должны использовать Scalar Matcher (http://www.phpspec.net/cookbook/matchers.html#scalar-matcher)

$this->getFile()->shouldBeString()
person tlenss    schedule 18.03.2014
comment
Это сделало это! Спасибо. - person Bradley Trager; 19.03.2014