2012-01-15 9 views
12

JasmineとQUnitのテストケースの仕様を書いて比較していますが、イベントが要素にバインドされているかどうかを確認するテストを書く必要があります。QUnitにspyOnアナログがありますか?

$('.page').live('click', function() { page_clicked($(this)) }); 

page_clickedのようなルックスを結合

イベントは、プライベートメソッドですが、それは別のモジュールの公開方法を求めています。

it('should bind events to pages', function() { 
    spyOn(search, 'get_results'); 

    $('.page:eq(0)').trigger('click'); 

    expect(search.get_results).toHaveBeenCalled(); 
}); 

このテスト作品:ここ

は、ジャスミンの仕様です。今私はQUnitと同じテストを書こうとしていますが、spyOnに似たものは見つかりません。 QUnitのこのテストを書くには?

答えて

9

原因として、QUnitにはスパイやモックがありません。しかし、Sinon.JSモッキングフレームワークを使用することができます。あなたのテストはsinon spyを使用して、次のようになります。

var spy = sinon.spy(search, 'get_results'); 
sinon.assert.calledOnce(spy); 
+0

はあなたのコードが、 'アサート(spy.calledOnce)は' 'アサートがありdefined'と' sinon.assert.called(スパイ) '投げないスローコピー/ペーストしようとしました'' get_resultsが少なくとも一度呼び出されたとは言われたが、決して呼び出されなかった ''' –

+0

''それはsinon dokuからコピー/ペーストされました。 –

+0

まだ動作しません。 '' get_resultsは一度呼び出されるが、 '' 0回呼び出された ''と期待される。私は 'page_clicked'機能と警告プロンプト、ジャスミンのテストパスでget_results'コール'後に警告を置くが、QUnit + SinonJSはしていません。 –

関連する問題