PHPSpec-检查方法是否返回文件

PHPSpec-检查方法是否返回文件,php,unit-testing,tdd,bdd,phpspec,Php,Unit Testing,Tdd,Bdd,Phpspec,我是phpspec的新手,我正在尝试测试一个方法是否返回一个文件。该方法基本上是: public function getFile(){ return file_get_contents('myFile.pdf'); } 因此,我最初的想法是测试getFile()是否返回字符串,因为file\u get\u contents根据 所以我的测试是这样的: $this->getFile()->shouldHaveType("string"); 但我的测试失败,并显示以下消息:

我是phpspec的新手,我正在尝试测试一个方法是否返回一个文件。该方法基本上是:

public function getFile(){
    return file_get_contents('myFile.pdf');
}
因此,我最初的想法是测试
getFile()
是否返回字符串,因为
file\u get\u contents
根据

所以我的测试是这样的:

$this->getFile()->shouldHaveType("string");
但我的测试失败,并显示以下消息:

expected an instance of string, but got "%PDF-1.4"....
我甚至尝试了
gettype(getFile())
,它返回
“string”


谁能告诉我我做错了什么。

你在检查一种类型的课程。但您确实希望检查返回的数据是否为string类型@虫族是正确的。您应该使用标量匹配器()


您正在检查一种类型的类。但您确实希望检查返回的数据是否为string类型@虫族是正确的。您应该使用标量匹配器()


您需要先使用
gettype(getFile())
然后检查itI。我已经尝试过了,它返回了“string”。您是否遇到了相同的错误?您的方法不会返回文件。它返回一些字符串。从未使用过phpspec,但根据其来源,您需要使用
ScalarMatcher
。因此,beScalar('string')可能是什么?您需要先使用
gettype(getFile())
,然后检查它。我已经尝试过了,它返回了“string”。您是否遇到了相同的错误?您的方法不返回文件。它返回一些字符串。从未使用过phpspec,但根据其来源,您需要使用
ScalarMatcher
。所以可能是贝斯卡拉('string')?就是这样!谢谢,成功了!非常感谢。
$this->getFile()->shouldBeString()