1

検証をどこでテストすることをお勧めしますか?

これは、Yii デモの機能テストです。

// test login process, including validation
 $this->clickAndWait('link=Login');
 $this->assertElementPresent('name=LoginForm[username]');
 $this->type('name=LoginForm[username]','demo');
 $this->clickAndWait("//input[@value='Login']");
 $this->assertTextPresent('Password cannot be blank.');

しかし、間違ったケース (「パスワードが長すぎる」や「電子メールが正しくない」など) ごとに検証テストを行うには、膨大な時間がかかります。では、単体テストでのみ検証をテストしないのはなぜでしょうか?

4

2 に答える 2

2

通常、ユーザーが検証のヘルプをどのように見るかを示す 1 つまたは 2 つのシナリオを提供しますが、通常はより高いレベルで表現します。たとえば、次のようになります。

Given Fred forgets to fill in his phone and email
When he tries to register
Then he should be told what's missing.

これらの手順は、単純なコード DSLに変換するか、Cucumberなどのツールに追加することができます( BDDを参照)。検証シナリオ (機能) は、システムの機能の例を示すだけで十分です。

あなたが提案するように、有効なものと無効なものの例を単体テストに入れます。

機能シナリオをシステムの機能を示すものと考え、単体テストをクラスまたはコードのより細かい要素の機能を示すものと考えると、分離が容易になります。ここでは動詞としての「テスト」という単語を避けていることに注意してください。ユニット レベルであっても、それは単なる例にすぎません。

于 2012-11-08T08:53:59.157 に答える
1

Sure, It is your project and you can test what you want, where you want.

I usually test the entire validation in my model unit tests. After that, I also test it again (but less extensive) during my web tests (This is to test if the correct variables are being parsed by the controller, etc...)

于 2012-11-08T08:15:06.867 に答える