0

プロジェクトが大きくなりすぎて手動でテストできないようになったので、単体テストでカバーし始めました。現在、モデルの検証プロセスをテストするというジレンマに直面しています。

一方では、検証はモデルのロジックの一部であるため、テストする必要があるため、以下のような退屈なテストから始めました。

public function testNameRequired()
{
    $this->object->name = '';
    $this->assertFalse($this->object->validate(array('name')));

    $this->object->name = 'Franky';
    $this->assertTrue($this->object->validate(array('name')));
}

しかし一方で、バリデーター (組み込みを意味します) はフレームワークの一部であり、既にテストされているため、基本的に静的rules配列をテストしています (偶発的なコード変更を追跡するのは VCS のタスクです)。

また、配列を受け入れて解析し、上記のようなテストを実行する、何らかの再利用可能なバリデーター テストを作成することも考えていましrulesたが、やはりフレームワーク テストを書き直すだけです。

質問は次のとおりです。

コードで検証をテストしますか? もしそうなら、どうやって?

4

1 に答える 1

3

テストのアイデアを見落としていると思います。検証コードが機能するかどうかを必ずしもテストしているわけではありませんが、検証ロジックが機能するかどうかをテストしています。

次の 2 つの理由から、引き続きすべてのテストを行うことをお勧めします。

  • 何かを検証するのを忘れた場合に備えて、それを検証することを忘れずに、どこに間違いがあるかを発見するかもしれません。
  • テストには別の目的があります。リファクタリングを容易にすることです。あなた、またはあなたのコードを最終的に作成する他のプログラマーが、それを編集することを決定する可能性があります。テストが既に行われている場合、新しいバージョンが機能することを簡単に確認できます。また、Yii の開発者が間違いを犯していないと思い込まないでください ;) 彼らもただの人間です - それはあなたが他の人をどれだけ信頼するかにかかっています。

rules()検証をテストすることにした場合、の出力を使用することに依存しません。これは、テストしているものの1つである必要があります。

于 2012-08-15T08:28:43.057 に答える