4

1.3.4からバージョン1.3.5にアップグレードした後、未定義の変数を参照すると、テストが失敗します。この動作を無効にする方法の提案はありますか?js strictモードに関連していると思います。デフォルトでこれを有効にしますが、無効にする方法を見つけることができません。

JsTestDriver.confファイルの一部:

load:
  - program.js
  - dialog.js

program.js:

Program = {};

dialog.js:

Program.Dialog = {};

エラーメッセージ:ReferenceError:Program is not defined

4

2 に答える 2

0

現在、異なる例外をスローしている別のブラウザー (または IE で開いているコンソールや厳密モードなどの別のブラウザー設定) でキャプチャしている可能性があります。または、おそらくコードベースがその後変更されている可能性があります。

JsTestDriver は、ブラウザーの例外をキャプチャするだけなので、1.3.5 の定義済み/未定義変数の処理の動作を変更していません。

とにかく、jsTestDriver はテストを失敗させませんが、未定義の変数を参照するとテストエラーが発生します。

たとえば、コードベース内のこのコード スニペットの場合 (undefは未定義の変数であると仮定します):

if(undef) alert("foo");

コマンド ラインからテストを実行したときの jsTestdriver の出力は次のとおりです。

Total 2 tests (Passed: 1; Fails: 0; Errors: 1) (1,00 ms)
  Chrome 23.0.1271.64 Windows: Run 2 tests (Passed: 1; Fails: 0; Errors 1) (1,00 ms)
    PersonTest.testWhoAreYou error (0,00 ms): ReferenceError: undef is not defined

ご覧のとおり、テスト スイートには 1 つのエラーがありましたが、0 は失敗しました。

編集:あなたの場合、jsTestDriverが名前空間定義の周りにクロージャーを追加している可能性があります。これを試して

それ以外の:

var Program = {};

使用する:

window.Program = {};

Program.Dialogも変えなくていいから

それが原因であるかどうかを知るためにそれを試してください。

于 2012-11-24T21:05:49.297 に答える
-1

ベスト プラクティスは、独自の undefined ( ) を定義するjstestdriver.util.undefine;か、 を使用することvoid 0です。

于 2012-11-18T11:41:56.590 に答える