特定の JQuery セレクターが Jasmine で実行されたことをテストするにはどうすればよいですか? 私は次のことをしようとしています:
spyOn($.fn, 'init').andCallThrough();
// my code
expect($.init).toHaveBeenCalled();
しかし、この呼び出しの後、 を$('div')
返しますが、返さObject { selector="div", context=document, NaN=div.spec, more...}
なければなりません (実際に返します$.fn.init('div')
): [div.jasmine_reporter, div.banner, div.logo, 4 more...]
. JQuery オブジェクトが使用できなくなるため、このようなことは当然コードを壊します。
例:
JQuery セレクターが呼び出されたことをテストしたい場合、次のように記述します。
it('tests', function() {
spyOn($.fn, 'init').andCallThrough();
$('html');
expect($.init).toHaveBeenCalled();
});
これにより、Jasmine: からのエラーが発生しますError: Expected a spy, but got undefined.
。次に、FireBug の $('html') 行にブレークポイントを設定し、そこに着いて見ようとすると、値は次の$('html')
ようになります。
Object { selector="html", context=document, NaN=html, more...}
をコメントアウトするspyOn
と、その行は次の$('html')
ように評価されます。
[html]
これは、私も見たいと思っていたものspyOn
です。