首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel:用于文件上传测试的Laravel存储外观上的未定义方法fake

Laravel:用于文件上传测试的Laravel存储外观上的未定义方法fake
EN

Stack Overflow用户
提问于 2017-03-15 01:15:28
回答 1查看 1.7K关注 0票数 2

通过在Laravel的HTTP测试中进行实验,我开始学习TDD。下面是我的测试函数:

代码语言:javascript
复制
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);
}

但是,在运行测试之后,我得到了如下错误:

代码语言:javascript
复制
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。但结果表明,在存储外观中没有名为fake的方法。我在供应商目录中做了一些搜索,以查找存储外观周围的任何fake方法,但我找不到它。我使用的是Laravel 5.4。我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-15 02:09:54

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42792457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档