0

私は Yii で単体テストを書いていますが、テスト モードにいることを理解する方法が必要です (デフォルトのスコープと..)。index-test.php で定数を定義しました。お気に入り:

defined('YII_TEST_MODE') or define('YII_TEST_MODE',true);

私のモデルでは:

if(YII_TEST_MODE){ ...

しかし、これをチェックしているときに私のコードでは、このエラーが表示されます:

Use of undefined constant YII_TEST_MODE - assumed 'YII_TEST_MODE'

あなたがテストモードにいることを yii に伝える良い方法はありますか? また、間違った構文を使用していますか?

4

2 に答える 2

1

コードで if(TEST) を使用する場合は十分に注意する必要があります。単体テストの目的は、特定の関数/クラスに使用される実際のコードをテストすることです。

あなたのやり方でそれを行うと、コードが実際のモードではなくテストモードで動作することが保証されるだけです-これは要点に反します。

各機能クラスが独自の単体テスト セットを持つ必要があるというパラダイムに従う場合は、テスト モードで特定のアクションを実行するのではなく、相互作用する他のクラスをモックします。

たとえば、モデル クラスの機能をテストしていて、データをデータベースに保存したくない場合は、代わりに、実際にはデータを保存しない接続を使用してデータベース接続をモックできます。

そうは言っても、構成フォルダーに注意すると、おそらく main.php と test.php があることがわかります。できることは、変数「is_test」を次のように定義することです。

'params'=>array(
  'is_test'=>false
)

これを main.php に入れ、test.php で true に設定します。次に、確認できますYii::app()->params["is_test"]

于 2013-09-24T06:16:05.603 に答える
0

index-test.php が単体テストを実行していると思っていたのは間違いでした。実際には /protected/tests/bootstrap.php がテスト モードを初期化します。

しかし、私はまだ index-test.php が良いのか分かりませんか?

于 2013-09-24T05:43:24.940 に答える