Mar*_*ace 3 php phpunit unit-testing
我正在尝试为文件导入导出模块编写单元测试.
我的一个方法检查传递的文件名是否存在.
如何模拟和编写测试以检查文件是否存在?
单元测试应该证明一个代码单元在完全隔离中正确运行.如果您的测试依赖于文件系统正常运行以便通过,那么您的测试不是最理想的,可能会在任何给定的测试运行中对您撒谎.
与任何实验一样,如果您在游戏中有多个变量,则无法确定结果.对于与文件系统交互的PHP代码,最好使用自定义流包装器(通常是vfsStream来模拟文件系统,但如果你真的想要,你可以轻松编写自己的流包装器).
$noTest < $testWithFileSystemDependency < $testThatMocksFileSystem
通常,这是通过将文件路径传递到直接使用它们的方法来实现的:
<?php
function myFunction($someFilePath) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以模拟文件系统并传入一个可测试的虚拟路径,该路径将表现出您嘲笑它的行为方式.