首先,我使用codeigniter作为我的PHP框架。很抱歉这个问题,我正在努力掌握单元测试的想法。他们说在开发网站功能之前进行单元测试是一种很好的做法。所以在这里我渴望了解这一点:
我的方法:
function download()
{
$data = file_get_contents("resources/temp/file.doc");
$name = "new_file.doc";
force_download($name, $data);
}
然后我用testDownload方法创建了一个测试控制器:
public function testDownload()
{
//Call the controller method
$this->CI->download();
//Fetch the buffered output
$out = output();
$this->assertFalse(preg_match('/(error|notice)/i', $out));
}
然后我测试它:phpunit test.php并给了我这个:
F[CIUnit] PHP Error: Warning - file_get_contents(resources/temp/file.doc): failed to open stream: No such file or directory File Path: controllers/contract.php (line: 22)
Time: 4 seconds, Memory: 7.50Mb
There was 1 failure:
1) ContractTest::testDownload
Failed asserting that 0 is false.
我只想测试它是否有正确的路径。或者我真的需要一个下载文件的测试脚本吗?对不起,我很困惑。
答案 0 :(得分:2)
“没有此类文件或目录”的原因:
使用PHPUnit进行测试时,当前工作目录将相对于运行phpunit的目录。但是在代码中,你将拥有相对于你的webserver目录的文字。
顺便说一下,单元测试应该测试你编写的代码。在单元测试中测试外部资源似乎并不是一个好主意。
答案 1 :(得分:1)
可能因为0只是一个假值而不是字面上的假,而assertFalse正在使用===。使用assertEquals或其他东西来代替0来检查。