Laravel:Laravel 存储立面上的未定义方法伪造用于文件上传测试

Laravel: Undefined method fake on Laravel storage facades for file upload testing

我开始通过在 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) 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的方法。我已经在 vendor 目录中进行了一些搜索,以找到 Storage facades 周围的任何 fake 方法,但我找不到它。我正在使用 Laravel 5.4。我错过了什么吗?

[已解决] 我检查了 laravel 的 Github repository 并意识到 fake 几天前添加的 Storage Facade 方法。完成 composer update 之后,我的问题就解决了。 今天的教训是不要忽视像 composer 这样强大的工具,并确保更新我们的项目依赖项以确保我们也可以执行最新的功能。