繁体   English   中英

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');的那一行Storage::fake('gambar');

测试功能的目的是确保文件上传API正常运行。 我遵循了Laravel关于从此文档上传文件的测试文档: https ://laravel.com/docs/5.4/http-tests#testing-file-uploads。 但结果表明,Storage Facade中没有所谓的“ fake方法。 我已经在供应商目录中进行了一些搜索,以查找有关Storage Facade的任何fake方法,但找不到。 我正在使用Laravel 5.4。 有什么我想念的吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM