我开始通过在Laravel的HTTP测试中进行实验来学习TDD。这是我的测试功能:Laravel:在Laravel存储外观上进行文件上传测试的未定义方法假冒
public function testLoginUsingUserDeni() {
$response = $this->json('POST', '/api/v1/login', [
'email' => '[email protected]',
'password' => 'secret'
]);
$response
->assertStatus(200)
->assertJSONStructure($this->loginSuccessJsonStructure);
return $response->original['token'];
}
/**
* @depends testLoginUsingUserDeni
*/
public function testGambarBaru($token) {
Storage::fake('gambar');
$response = $this->json('POST', '/api/gambar/baru', [
'token' => $token,
'gambar' => UploadedFile::fake()->image('evidence.jpg'),
'posisi' => 1
]);
Storage::disk('gambar')->assertExists('evidence.jpg');
$response
->assertStatus(200)
->assertJSONStructure($this->gambarJsonStructure);
}
但是,在运行测试我有错误,如在此之后:
PHPUnit 5.7.11 by Sebastian Bergmann and contributors.
Runtime: PHP 7.0.13-0ubuntu0.16.04.1
Configuration: /home/kromatin/Projects/PJB REMBANG/web-apps/KawistaK3_web/phpunit.xml
..E....................................... 42/42 (100%)
Time: 2.94 seconds, Memory: 20.00MB
There was 1 error:
1) Tests\Feature\Api\GambarTest::testGambarBaru
BadMethodCallException: Call to undefined method League\Flysystem\Filesystem::fake
/home/kromatin/Projects/PJB REMBANG/web-apps/KawistaK3_web/vendor/league/flysystem/src/Plugin/PluggableTrait.php:86
/home/kromatin/Projects/PJB REMBANG/web-apps/KawistaK3_web/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php:475
/home/kromatin/Projects/PJB REMBANG/web-apps/KawistaK3_web/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php:328
/home/kromatin/Projects/PJB REMBANG/web-apps/KawistaK3_web/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:221
/home/kromatin/Projects/PJB REMBANG/web-apps/KawistaK3_web/tests/Feature/Api/GambarTest.php:65
ERRORS!
Tests: 42, Assertions: 313, Errors: 1.
Script phpunit --color=always --verbose handling the test event returned with error code 2
我执行testGambarBaru
功能时遇到错误,而其他功能运作良好。那个错误指向了我放置的地方Storage::fake('gambar');
。
我的测试功能的目的是确保我的文件上传API工作正常。我遵循Laravel有关测试文件上传的文档:https://laravel.com/docs/5.4/http-tests#testing-file-uploads。但结果表明在Storage Facade中没有称作fake
的方法。我已经在供应商目录中进行了一些搜索,以找到围绕存储外观的任何fake
方法,但我无法找到它。我正在使用Laravel 5.4。有什么我错过了吗?
你可以包含'use'代码的一部分吗? – apokryfos
我意识到前几天添加了存储外观的“假”方法。在完成'作曲家更新'之后,问题就解决了。我感到愚蠢的是,我忽略了使用像composer haha 这样强大的工具更新我的依赖关系,谢谢你的回复@apokryfos :) –