使用 Dusk 测试附加文件 - 通过 Tinker 工作,但不能从测试中工作

Testing attaching a file with Dusk - works via Tinker but not from the Test

我有一个文件上传器,我为其编写了以下测试:

$browser->visit('/product/professional-photo-prints')
        ->attach('photo', __DIR__.'/storage/app/public/testing/test_upload.jpg');

没有上传文件。也没有错误。

但是,当我这样做时:

$browser->visit('/product/professional-photo-prints')
        ->tinker();

一旦在 Tinker 启动的终端中,当我输入与我在测试中使用的完全相同的文件上传命令时:

$browser->attach('photo', __DIR__.'/storage/app/public/testing/test_upload.jpg');

...有效。我可以看到我的 Chrome 实例上传了文件和所有文件。

我这辈子都想不通 运行 命令与测试本身或 Tinker 之间的区别。

如有任何帮助,我们将不胜感激。谢谢。

P.S。我正在使用 Laravel 5.5 和 Dusk 2.0

DIR 魔术常量指的是正在执行的文件的父文件夹。

->attach('photo', __DIR__.'/storage/app/public/testing/test_upload.jpg');

这个路径当然没有找到文件。你应该试试这个:

->attach('photo', storage_path('app/public/testing/test_upload.jpg'));

此外,如果你的测试文件在你的public里面(例如),你可以使用base_path

例如:base_path("public/sample-recording/test.mp3")