2017-03-14 12 views
2

Laravel의 HTTP 테스트를 실험하여 TDD를 배우기 시작했습니다. 나는이 같은 오류를 가지고 테스트를 실행 한 후,Laravel : 파일 업로드 테스트를위한 Laravel storage facades의 가짜 메소드

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이라는 메소드가 없다고 말했다. 벤더 디렉토리 내부에서 검색을 수행하여 Storage facades 주변의 fake 메소드를 찾았지만 찾을 수 없습니다. 나는 Laravel 5.4를 사용하고있다. 내가 놓친 것이 있습니까?

+0

코드의'use' 부분도 포함시킬 수 있습니까? – apokryfos

+0

나는 며칠 전에 저장 장치 외벽에 대한 가짜 방법이 추가되었다는 것을 깨달았습니다. '작곡가 업데이트'를 한 후에 문제가 해결되었습니다. 나는 작곡가 haha ​​ 과 같은 강력한 도구를 사용하여 내 의존성을 업데이트하는 것을 소홀히하는 것이 어리 석다. 답장을 보내 주셔서 감사합니다. @apokryfos :) –

답변

3

[SOLVED] laravel의 Github repository을 확인한 결과 며칠 전에 Storage Facade에 fake 메서드가 추가되었음을 알았습니다. composer update을 수행 한 후 내 문제가 해결되었습니다. 오늘 배운 교훈은 작곡가와 같은 강력한 도구를 무시하지 않고 우리가 최신 기능을 실행할 수 있도록 프로젝트 의존성을 업데이트해야한다는 것입니다.