3

非常に基本的な質問があります。ジャスミンを使用してオブジェクトにメソッドが定義されているかどうかを確認するにはどうすればよいですか?これまでのところ:

expect(obj.method).not.toBeUndefined();

しかし、レポートは役に立たないと述べています:

'Expected undefined not to be undefined.'

どういうわけか、レポートで探していた物件の名前を教えてくれるといいですね。

アドバイスをいただければ幸いです。

4

3 に答える 3

4

JS エンジンobj.methodは、関数に渡される前に評価しexpectます。"method"したがって、マッチャー内から文字列を復元する方法はありません。

メソッド名を文字列型の引数として受け取る独自のマッチャーを作成する必要があります。

何かのようなもの

expect(obj).toHaveMethod("method");
于 2012-06-10T15:02:11.683 に答える
0

多分あなたは単にするべきです

 it("The 'toBeDefined' matcher compares against `undefined`", function() {
    var a = {
      foo: 'foo'
    };

    expect(a.foo).toBeDefined();
    expect(a.bar).not.toBeDefined();
  });
于 2012-06-10T14:43:21.200 に答える
0

次のようなものを使用できますか...

var validMethod = obj.hasOwnProperty('method') 
                  && typeof obj.method == 'function';
于 2012-06-07T13:40:19.100 に答える