YUI3テストフレームワークを使用して、宣言され、定義された関数の存在をテストしようとしています。SafariおよびFireFoxで、isNotUndefined、isUndefined、またはisFunctionを使用しようとすると失敗します。テストフレームワークで処理できる例外をスローすることを期待しています。
Y
Object
Y.Assert
Object
Y.Assert.isNotUndefined(x, "fail message")
ReferenceError: Can't find variable: x
Y.Assert.isUndefined(x, "fail message")
ReferenceError: Can't find variable: x
Y.Assert.isFunction(x, "fail message")
ReferenceError: Can't find variable: x
しかし、代わりに、インタープリターが邪魔をしているため、失敗メッセージが表示されず、残りのテストが実行されません...これらの機能の目的を損なうものではありませんか、それとも誤解していますか?フレームワーク?
私の直感によると、上記のコードと上記のコードのみを考えると、
Y.Assert.isUndefined(x, "fail message")
エラーなしで続行する必要があります(xが宣言されていないため)
Y.Assert.isNotUndefined(x, "fail message")
メッセージ「失敗メッセージ」をログに記録する必要があります(xが宣言されていないため)。
ただし、ReferenceErrorのため、(これらのYUI3メソッドを使用して)宣言されていないオブジェクトをテストする方法はありません。代わりに、かなり醜いアサーションコードが残っています。使えない
Y.Assert.isNotUndefined(x)
ReferenceError: Can't find variable: x
また
Y.assert( x !== undefined )
ReferenceError: Can't find variable: x
それは私を残します
Y.assert( typeof(x) !== "undefined" ) // the only working option I've found
Assert Error: Assertion failed.
これはより読みにくいです
Y.Assert.isNotUndefined(x)
繰り返しますが、私は尋ねます:それはこれらの機能の目的を損なうのではありませんか、それとも私はフレームワークを誤解していますか?
それで
x
は宣言されていないため、直接テストすることはできませんが、
var x;
宣言しますが、未定義のままにします。ついに
var x = function() {};
宣言され、定義されています。
私に欠けているのは、簡単に言う能力だと思います
Y.Assert.isNotUndeclared(x);
-ウィル