2011-09-14 18 views
11

Tengo un formulario que hace algunas cosas extensas de Javascript antes de finalmente enviarlo a su URL de ACCIÓN. Estoy escribiendo algunas pruebas de unidades de Jasmine y quiero asegurarme de que las cosas Javascript ocurran cuando se envía el formulario. Sin embargo, definitivamente no quiero que la página vaya a la URL de ACCIÓN mientras estoy realizando pruebas unitarias.¿Cómo puedo probar el envío de un formulario en Jasmine?

vi lo que parecía ser una buena sugerencia aquí: http://groups.google.com/group/jasmine-js/browse_thread/thread/a010eced8db17c1a?pli=1

... pero, como soy bastante nuevo en el jazmín, no estoy seguro de cómo ponerlo en práctica y no pueden encontrar ejemplos pertinentes en la web. ¿Alguien tiene algún código de muestra que podría ver que logre lo que necesito?

Gracias!

Respuesta

35

Tal vez este fragmento de código puede ayudar ...

it('calls ajax post on export button click', function() { 
    view.render(); 
    var form = $('#export_images_xml_form'); 
    var submitCallback = jasmine.createSpy().andReturn(false); 
    form.submit(submitCallback); 

    $('#export_images_xml_button').click(); 

    expect(form.attr('action')).toEqual('/export'); 
    expect($('#export_images_xml_form input').attr('value')).toEqual('22,33,44'); 
    expect(submitCallback).toHaveBeenCalled(); 
}); 

lo que hago es, básicamente, parando cada Someter a determinada forma de regresar falsa en la devolución de llamada asociado (ver el comportamiento submitCallback).

Entonces puedo también de devolución de llamada prueba de que se ha llamado ...

espero que ayude!

+0

Exactamente lo que estaba buscando, gracias! – recurser

+3

¡Debe aceptar esta respuesta! – noazark

+0

Me pueden responder que se deben aceptar 20 o más votos, si no hay respuestas aceptadas ... :) –

1

Si no desea probar que se llamó al submit, no necesita crear un espía. Con jQuery simple, también puede obtener el efecto de no enviar el formulario. Pongo el siguiente código fuera de todas las pruebas, de esa manera se aplica a todas las pruebas dentro del archivo.

$('form').on('submit', function() { 
    return false; 
}); 
Cuestiones relacionadas