使用 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")
我有一个文件上传器,我为其编写了以下测试:
$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")