コマンドをコピーして実行する場合は、$ は含めないでください
$ git clone [email protected]:posse-ap/checktest_ph4_test3.git$ cd checktest_ph4_test3$ docker compose build --no-cache
$ docker compose up -d
$ docker compose exec app bash
$ composer installhttp://localhost/ にアクセスするとLaravelの画面が表示されます。
$ docker compose exec app bash
$ php artisan migrate$ docker compose stop- App\Http\Controllers\Api\V1\StarWarsControllerの__invokeを実装する
- https://swapi.dev/api/films/1 に GET リクエストを送り、レスポンスを受け取る処理を記述してください。また、外部APIにリクエストを送信する処理は Guzzle を利用してください。
- StarWarsControllerに関するテストを流してみる
確認方法
- テストコマンドを実行して「Tests: 1 passed」という風にテストが通っていれば合格です。
$ php artisan test tests/Feature/Api/V1/StarWarsControllerTest.php- App\Services\GetQiitaArticles.phpを確認し、TODOコメント部分を実装してください。
- base urlはL13行目に定義しているので、文字列連結して使ってください(ex: self::QIITA_BASE_URL . $qiita_url_path)
- リクエストヘッダーには QiitaAPI の token をセットしてください
- .envに記述されているQIITA_TOKENを利用してください
- $statusがddで200になっていることを確認
確認方法
- http://localhost/api/api/v1/qiita/articles にアクセス、画面に「200」と表示で合格です。
tests/Feature/Api/V1/Qiita/Articles/IndexControllerTest.phpをご確認ください test_get_request内に以下を確認するテストを書いてください
問2の確認が合格している前提の問題になっています
- qiita_articles テーブルのレコードが0件であること
- http://localhost/api/api/v1/qiita/articles にリクエストを送信する
- レスポンスステータスが期待通り(201)であること
- レスポンスが期待通りであること
- qiita_articles テーブルのレコードに2件登録されていること
確認方法
- 「Tests: 1 passed」テストが通っていれば合格です。
$ php artisan test tests/Feature/Api/V1/Qiita/Articles/IndexControllerTest.php --filter "test_get_request"App\Http\Controllers\Api\V1\Qiita\Articles\IndexControllerの $this->getQiitaArticles->execute() がエラーを起こした時、statusが期待通りであることをFeatureテストで担保してください。
test_return_value_when_request_successのテストコードを参考にtest_return_value_when_request_failedにMockeryを使いテストを書いてください
$this->getQiitaArticles->execute()の処理で例外を吐くモックを作成する- http://localhost/api/api/v1/qiita/articles にリクエストを送信する
- レスポンスステータスが期待通り(201)であること
- レスポンスが期待通りであること
確認方法
- テストが通っていれば合格です。
$ php artisan test tests/Feature/Api/V1/Qiita/Articles/IndexControllerTest.php --filter "test_return_value_when_request_failed"Tests\Unit\Repositories\CreateQiitaArticlesTest.phpを確認してください
- qiita_articlesテーブルにレコードが登録されるようにexecuteに適当なデータを入れて、レコードが登録されることを担保してください
- executeに空の配列(Collection)を入れて、レコードが登録されないことを担保してください
確認方法
- テストが通っていれば合格です。
$ php artisan test tests/Unit/Repositories/CreateQiitaArticlesTest.php --filter "test_empty_collection_given"- テストが通っていれば合格です。
$ php test tests/Unit/Repositories/CreateQiitaArticlesTest.php --filter "test_not_empty_collection_given"author: ハシモト流エンジニアリング家元