单元测试的文件下载?
经过长时间思考这个话题没有结果,我希望有人可以给我一个关于phpUnit测试下载的暗示。 我如何为这个函数创建一个phpUnit测试,为zip-File执行下载? 或者有没有一种通常的惯例来测试这样的逻辑?
public function createOutput($zipFolderName) {
$zipFolderName = $zipFolderName."/imageResizer.zip";
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=' . $zipFolderName);
header('Content-Length: ' . filesize($zipFolderName));
readfile($zipFolderName);
}
我觉得这个功能有几个组件,每个组件都应该测试以确保它正确地完成:
$zipFolderName
路径 它看起来像某种文件处理程序抽象可以帮助您轻松地单元测试此方法。
class FileUtils {
public getDownloadFileName($folderName) {}
public getFileSize($file) {}
public readFile($file) {}
}
现在你可以在你的函数中注入一个文件实用程序实例。 对于你的产品代码,这个类会将文件操作划分到实际的文件系统中,但是你的测试会提供一个存根/模拟让你断言你的单元正在执行预期的操作。
public function createOutput($fileUtilsInstance, $zipFolderName) {
$zipFolderName = $fileUtilsInstance->getDownloadFileName($zipFolderName);
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=' . $zipFolderName);
header('Content-Length: ' . $fileUtilsInstance->getFilesize($zipFolderName));
$fileUtilsInstance->readFile($zipFolderName);
}
相同的策略可以应用于header
方法。
我建议你vfsStream库:
vfsStream是一个虚拟文件系统的PHP流包装器,可能有助于单元测试来模拟真实的文件系统。 它可以用于任何单元测试框架,如PHPUnit或SimpleTest。
相同的有用信息:
希望这个帮助。 让我知道你是否需要一些例子
链接地址: http://www.djcxy.com/p/36049.html上一篇: Unit test for a file download?
下一篇: Vertical scrollview conflicting with vertical navigation