2010-02-16 20 views
5

Estoy usando Jack como biblioteca de burla de JavaScript. http://github.com/keronsen/jack. También estoy usando qunit.burla de prueba de unidad Ajax usando Jack

Tengo la siguiente llamada AJAX en mi código de javascript que estoy tratando de escribir para la prueba.

$.ajax({ 
    url: $('#advance_search_form').attr('action'), 
    type: 'post', 
    dataType: 'json', 
    data: parameterizedData, 
    success: function(json) { 
     APP.actOnResult.successCallback(json); 
    } 
}); 

El siguiente código está funcionando.

jack(function() { 
    jack.expect('$.ajax').exactly('1 time'); 
} 

Sin embargo, quiero comprobar si todos los argumentos se presentan correctamente. Intenté seguir pero no funcionó.

jack.expect('$.ajax').exactly('1 time').whereArgument(0).is(function(){ 

var args = arguments; ok ('http://localhost:3000/users', args.url, 'url debe ser válido'); // prueba similar para muchas teclas del objeto });

Quiero obtener los argumentos para poder realizar una batería de prueba.

Respuesta

4

dos enfoques:

Uso .hasProperties():

jack.expect('$.ajax').once() 
    .whereArgument(0).hasProperties({ 
     'type': 'post', 
     'url': 'http://localhost:3000/users' 
    }); 

... o capturar a los argumentos y hacer afirmaciones qunit:

var ajaxArgs; 
jack.expect('$.ajax').once().mock(function() { ajaxArgs = arguments[0]; }); 
// ... the code that triggers .ajax() 
equals('http://localhost:3000/users', ajaxArgs.url); 

La primera versión utiliza más de la Jack API (que merece una mejor documentación), y es más legible, IMO.

La última versión le dará un mejor informe de errores.

+0

impresionante. Gracias por la mirada rápida. –

+0

Tómese dos minutos para agregar ambos enfoques al README de jack. una vez más, buen trabajo con Jack. Lo amo. –

+0

primer enfoque está funcionando. El segundo enfoque está fallando. Ambos argumentos y argumentos [0] informan como indefinidos. –