2012-01-15 16 views
12

Jasmine ve QUnit için farklı test durumları için bunları karşılaştırmak üzere yazı yazıyorum ve bir olayın bir öğeye bağlanıp bağlanmadığını kontrol etmek için bir sınama yazmadan önce aynı şekilde baktım.QUnit'te bir spyOn analogu var mı?

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

page_clicked gibi

Olay bağlayıcı görünüyor özel bir yöntemdir ancak başka modülün bir kamu yöntemi için çağırır.

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

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

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

Bu test çalışır: Burada

bir yasemin spec olduğunu. Şimdi aynı testi QUnit için yazmaya çalışıyorum ve spyOn'a benzer bir şey bulamıyorum. QUnit için bu testi nasıl yazılır?

cevap

9

Nedeni QUnit'in casusu ya da ayağı yok. Ancak Sinon.JS alay çerçevesini kullanabilirsiniz. Testiniz sinon spy kullanarak bu gibi görünmelidir:

+0

/kopyalama kodunuzu ama 'assert (spy.calledOnce) yapıştırmak için çalıştı' 'assert' sinon.assert.called (casus) defined' ve edilmez atar 'atar

var spy = sinon.spy(search, 'get_results'); sinon.assert.calledOnce(spy); 
'Beklenen get_results en az bir kez çağrıldı ama hiç çağrılmadı ' –

+0

Ok kopyalandı/yapıştırıldı sinon dokudan düzeltildi. –

+0

Hala çalışmıyor. Beklenen get_results bir kez çağrıldı ama 0 kere çağrıldı. "Page_clicked" işlevinde get_results işlevini çağırdıktan sonra uyarı yazdım ve uyarı iletileri, Jasmine sınaması geçti ancak QUnit + SinonJS bunu yapmıyor. –