Laravel:Laravel存储外墙上未定义的方法进行文件上传测试



我通过在Laravel的HTTP测试中进行实验开始学习TDD。这是我的测试功能:

public function testLoginUsingUserDeni() {
    $response = $this->json('POST', '/api/v1/login', [
            'email' => 'ramadhanrperdana@gmail.com',
            '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) TestsFeatureApiGambarTest::testGambarBaru
BadMethodCallException: Call to undefined method LeagueFlysystemFilesystem::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#tests#testing-file-uploads。但是结果表明,在存储外墙中没有称为fake的方法。我已经在供应商目录中进行了一些搜索,以查找围绕存储立面的任何fake方法,但找不到。我正在使用Laravel 5.4。我错过了什么吗?

[已解决]我检查了Laravel的GitHub存储库,并意识到几天前添加了用于存储立面的fake方法。完成composer update后,我的问题解决了。今天学到的教训是不忽略像作曲家这样的强大工具,并确保更新我们的项目依赖性,以确保我们也可以执行最新功能。

最新更新