Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

フォームのテストを記述 #44 #7

Open
wants to merge 11 commits into
base: master
Choose a base branch
from

Conversation

fr-matsuo
Copy link
Owner

  • 都道府県データの確認
  • バリデーションの確認
  • DB登録不可時に戻るを確認
  • helpersのロード問題を解決

テスト再考

  • モデルのロジック確認
    • バリデーションチェック
    • DB追加重複時のエラーチェック
  • コントローラのアクション確認
    • 通常時の画面遷移確認
    • エラー時の画面遷移確認
      • バリデーションに引っ掛かった際
      • DBに重複登録しようとした際

@@ -80,4 +80,4 @@

require app_path().'/filters.php';

require app_path().'/helpers.php';
//require app_path().'/helpers.php';
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

テスト対象の関数test~()が複数あると、helpersのgetSelectedが重複ロードされるエラーが出るので、一旦抜いてあります。

@fr-matsuo fr-matsuo changed the title [WIP]フォームのテストを記述 #44 フォームのテストを記述 #44 Jun 19, 2014
@fr-matsuo fr-matsuo changed the title フォームのテストを記述 #44 [WIP]フォームのテストを記述 #44 Jun 19, 2014
@fr-matsuo fr-matsuo changed the title [WIP]フォームのテストを記述 #44 フォームのテストを記述 #44 Jun 19, 2014
@@ -1,5 +1,7 @@
<?php

require_once "/home/ec2-user/public_html/laravel_training/app/models/Account_Info.php";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これ使ってないような気がするので消しておきましょう。

http://laravel.com/docs/eloquent
あとモデルは読み込まなくても宣言できるのでドキュメントを参考にしてみてください。

@fr-sato
Copy link
Collaborator

fr-sato commented Jun 19, 2014

http://laravel.com/docs/testing

Controllerのテストですが、対応してもらったのは正しくDBに登録できるかや、表示するデータが正しいかというテストになってます。

フレームワークでのControllerの役割を考えてほしいのですが、URLに紐づくアクション内のロジックを実行し、必要な値をアサインしてテンプレートを表示するのがControllerの役割です。そういう意味でいうと、今のテストはアクション内の一部ロジックのテストしか出来ておらず、URLに対して指定したアクションが実行できているか等はテストできてないです。

Laravelの公式を見てみると、指定したアクションで正しいビューが読み込まれているか

$response = $this->action('GET', 'HomeController@index');
$view = $response->original;
$this->assertEquals('John', $view['name']);

指定したURLでレスポンスがちゃんと返ってくるか

$crawler = $this->client->request('GET', '/');
$this->assertTrue($this->client->getResponse()->isOk());

とかをテストしています。この辺を読んでテストを書いてみてください。

@@ -1,111 +1,47 @@
<?php

require_once "/home/ec2-user/public_html/laravel_training/app/models/Account_Info.php";
require_once "/home/ec2-user/public_html/laravel_training/app/models/Prefecture_Info.php";
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

前回は、テストで読み込めてない模様だったので記述しました。
今回は、コントローラからモデルの静的関数が呼び出せなかったので記述しています。

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

モデルが呼び込めない件はひとまず置いておいて、フルパスで書くのはやめましょう。前も何回か指摘していてフルパスで書く癖があるっぽいので直しましょう。

これだと他の人の環境では動かなくなります。(laravel_trainingより前のパスは人によって違うので)
相対パスで書くか、PHPのファイル関数やディレクトリ関数を用いて読み込んで下さい。

@fr-matsuo fr-matsuo changed the title フォームのテストを記述 #44 [WIP]フォームのテストを記述 #44 Jun 20, 2014
@fr-matsuo fr-matsuo changed the title [WIP]フォームのテストを記述 #44 フォームのテストを記述 #44 Jun 20, 2014
@bossato
Copy link
Collaborator

bossato commented Jun 21, 2014

commit確認しましたが、テストを対応する前に設計をし直してるように見えます。このPRはテストに対するPRなので、PRでやるべき事とやった内容が違ってます。もし設計し直す場合は別PRにして出し直してください。

あまりにも1つのPRでのボリュームが多過ぎる&変更点が多過ぎると、レビューのコストがかかります。実際にプロジェクトでPRやレビューをする場合、ここもコスト = 利益率に関わるという意識を持っておいて下さい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants