【发布时间】:2019-07-13 17:09:22
【问题描述】:
我开发了一个下载基于数据库生成的 CSV 文件的功能。 我已经为此创建了测试并且对我来说工作正常。但问题是完成测试运行后文件没有被删除。
问题。一旦测试完全运行,这个使用 storage fake 创建的文件会被自动删除吗?如果是,它不会为我删除。请查看我的测试功能。
/*Test file*/
public function testAmazonDailyPendingStatusReport(){
//creating factories
Storage::fake('reportslocal');
$dailyStatus = new DailyStatus(
new FileWriter(),
new Filesystem(),
Storage::disk('reportslocal')
);
$fileExported = $dailyStatus->export();
//continuing assertions
}
/*export function*/
public function export(){
//fetch data from database.
//create file using SplFileObject
//writing files into it.
//storing to 'reportslocal' path
//sending email to client with attached this file
}
如果文件没有自动删除,我该怎么办?或者我可以在我的测试功能中使用Storage::disk('reportslocal')->delete($fileExported)
.这是正确的方法吗?
这里要检查的最佳断言是什么? 我已经检查了,文件存在,列号,列标题顺序和值,检查文件的内容。有什么我错过的吗?
请帮我做这个(优先是 storage::fake() 问题。)。
提前致谢。
【问题讨论】:
-
您可以尝试使用php的unlink功能,只需将文件的确切路径传递给unlink函数即可删除文件。
-
我的问题是文件会被自动删除吗?如果是的话,我在我的职能中错过了什么。如果不是,那么 storage::fake 的确切用途是什么?我正在使用 laravel 5.7
-
默认情况下,fake 方法会删除其临时目录下的所有文件。如果您想保留这些文件,可以改用“persistentFake”方法。
-
但是,该文件并没有为我删除。你能帮我找出我犯错的地方吗?
-
这个问题+1。文件保留在目录
storage/framework/testing/disks/[fakediskname]中。这不一定是一个大问题,因为您可以忽略这些文件,并且在重新运行测试时它们会被覆盖而不会出现问题。但是您希望这些文件会被清理。