2012-11-01 20 views
5

Ben böyle göndermeniz durumunda iliştirilmiş bir işleyici, olan bir biçim:Yasemin jQuery ile form gönderme işleyicisi Test

$('#myForm').bind('submit', $.proxy(this, 'form_onSubmit')); 

Ben sağlamak için bu kod satırını sınamak nasıl çalışamaz form gönderildiğinde, doğru olay işleyicisini kullanır.

describe('Submitting the form', function() { 
    it ('Uses the correct event handler', function() { 
     spyOn(myConstructor, 'form_onSubmit'); 
     $('#myForm').trigger('submit'); 
     expect(myConstructor.form_onSubmit).toHaveBeenCalled(); 
    }); 
}); 

Ben de kullanmaya çalışıyorum: Ben edemedik olarak

expect($('#myForm')).toHandleWith('submit', myConstructor.form_onSubmit); 

Fakat sayfa sonsuz döngüye kendisini göndererek tutar Örneğin, bu işe yaramazsa Bunun herhangi bir yerde çalışan bir örneğini bulmak için, eminim yanlış kullanmaktayım (Jasmine, undefined öğesinin undefined olduğu hatayı okuyamıyor "hatayı okuyor" this.actual.data ("events")).

Lütfen yardım edebilir misiniz? Saatlerce çalışıyorum! Teşekkürler.

+0

hmmm ... 'triggerHandler ('to') Does' Ayrıca sayfa geri gönderebileceksiniz neden için

<form class="js-game-form" action="javascript:void(0)"> </form> 

? –

+0

Geri dönüşün gerçekleşmesini engeller (daha önce hiç kullanmadı - teşekkürler!) Ama ne yazık ki, Jasmine benimConstructor.form_onSubmit çağrılmadığı için test başarısız olur. (Kodda bir kesme noktası koyarsam bile) – user399050

cevap

6

Etkinlikte casusluk yapmak için Jasmine jQuery kullanıyorum.

https://github.com/velesin/jasmine-jquery#event-spies

Ayrıca ben bir fikstür kullanarak formu alay ediyorum.

Formun kendisinde (fikstürde) formun gönderilmesini önlemek için eylemi "javascript: void (0)" olarak ayarlıyorum. Test

describe("#submitForm", function(){ 
    it("should submit the form when you press one of the update buttons", function(){ 
     var spyEvent = spyOnEvent(formSelector, 'submit'); 
     $(updateButtonSelector).trigger("click"); 
     expect(spyEvent).toHaveBeenTriggered(); 
    }); 
}); 
+1

Bunu paylaştığınız için teşekkürler, özellikle de hiçbir şey yapmamak için formun eylemini ayarlamak burada çok önemlidir! – RSeidelsohn

+1

'" javascript: void (0) "' Süper ipucu. Teşekkürler. – Hugh

İlgili konular