2010-02-16 4 views
5

Sto usando Jack come libreria di derisione JavaScript. http://github.com/keronsen/jack. Sto anche usando qunit.L'unità Ajax sta testando il mocking usando Jack

Ho seguito la chiamata AJAX nel mio codice javascript che sto cercando di scrivere.

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

Il seguente codice funziona.

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

Tuttavia, voglio verificare se tutti gli argomenti sono presentati correttamente. Ho provato a seguire ma non ha funzionato.

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

var args = argomenti; ok ('http://localhost:3000/users', args.url, 'url dovrebbe essere valido'); // test similare per molte chiavi dell'oggetto });

Voglio ottenere argomenti in modo da poter eseguire una batteria di test.

risposta

4

due approcci:

Usa .hasProperties():

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

... o catturare gli argomenti e fare asserzioni 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 prima versione utilizza più del Jack API (che merita una documentazione migliore) ed è più leggibile, IMO.

Quest'ultima versione offre una segnalazione degli errori molto migliore.

+0

impressionante. Grazie per l'occhiata veloce. –

+0

Dedicare due minuti per aggiungere entrambi gli approcci al README del jack. ancora una volta buon lavoro con Jack. Lo adoro. –

+0

primo approccio funziona. Il secondo approccio sta fallendo. Sia gli argomenti che gli argomenti [0] riportano come non definiti. –