非常に基本的な質問があります。ジャスミンを使用してオブジェクトにメソッドが定義されているかどうかを確認するにはどうすればよいですか?これまでのところ:
expect(obj.method).not.toBeUndefined();
しかし、レポートは役に立たないと述べています:
'Expected undefined not to be undefined.'
どういうわけか、レポートで探していた物件の名前を教えてくれるといいですね。
アドバイスをいただければ幸いです。
非常に基本的な質問があります。ジャスミンを使用してオブジェクトにメソッドが定義されているかどうかを確認するにはどうすればよいですか?これまでのところ:
expect(obj.method).not.toBeUndefined();
しかし、レポートは役に立たないと述べています:
'Expected undefined not to be undefined.'
どういうわけか、レポートで探していた物件の名前を教えてくれるといいですね。
アドバイスをいただければ幸いです。
JS エンジンobj.method
は、関数に渡される前に評価しexpect
ます。"method"
したがって、マッチャー内から文字列を復元する方法はありません。
メソッド名を文字列型の引数として受け取る独自のマッチャーを作成する必要があります。
何かのようなもの
expect(obj).toHaveMethod("method");
多分あなたは単にするべきです
it("The 'toBeDefined' matcher compares against `undefined`", function() {
var a = {
foo: 'foo'
};
expect(a.foo).toBeDefined();
expect(a.bar).not.toBeDefined();
});
次のようなものを使用できますか...
var validMethod = obj.hasOwnProperty('method')
&& typeof obj.method == 'function';