Qunit a paramétré les tests et se moque

J'ai deux questions:

Pouvez-vous paramétrer les tests unitaires en qunit?

Comment vous moquez-vous avec qunit, par exemple, en vous moquant d'un appel getJSON ?

Merci

Pour se moquer des demandes d'ajax, vous pouvez essayer quelque chose comme ça …

Voici la fonction que vous souhaitez tester:

  var functionToTest = function () { $.ajax({ url: 'someUrl', type: 'POST', dataType: 'json', data: 'foo=1&foo=2&foo=3', success: function (data) { $('#main').html(data.someProp); } }); }; 

Voici le cas de test:

  test('ajax mock test', function () { var options = null; jQuery.ajax = function (param) { options = param; }; functionToTest(); options.success({ someProp: 'bar' }); same(options.data, 'foo=1&foo=2&foo=3'); same($('#main').html(), 'bar'); }); 

Il en résulte essentiellement la fonction ajax de jQuery, puis vérifie les 2 éléments suivants: – la valeur qui a été transmise à la fonction ajax – invoque le rappel de succès et affirme qu'il a fait ce qu'il était censé faire

Au lieu de remplacer la fonction AJAX de jQuery, vous pouvez également utiliser le plugin jQuery Mockjax développé par .appendTo. Ce plugin fait essentiellement ce que suggère l'autre réponse, mais cela permet une moquerie beaucoup plus sophistiquée. Par exemple, si vous avez la fonction:

 $.ajax({ url:"/api/user", type:"GET", dataType:"json", data:'{"uid":"foobar"}', success:function(data){ console.log("Success!"); }, error:function(data){ console.log("Error!"); } }); 

Vous pouvez le moquer avec mockjax en appelant simplement la fonction mockjax, qui est automatiquement incluse dans jQuery:

 $.mockjax({ url:"/api/user", type:"GET", response:function(requestData){ //handle the mock response in here this.responseText = '{"fullname":"Mr. Foo Bar"}'; } }); 

La deuxième fonction de moqueur peut être incluse dans un fichier JavaScript externe, disons "mocks.js", et la seule autre chose à faire est d'inclure la bibliothèque mockjax (qui se trouve à l' adresse https://github.com/appendto / Jquery-mockjax / ). La seule chose à garder à l'esprit, c'est que cela ne fera que se moquer des appels jquery ajax, pas tous XMLHttpRequests. Si vous voulez le faire, suivez les conseils de @bertvh et utilisez Sinon.js.

Je viens de commencer à utiliser Sinon.JS , ce qui permet de se moquer de XMLHttpRequests et offre également une simple API de faux-serveur. Vraiment facile à utiliser! Il offre également une intégration avec qunit.

Il y a ma mise en œuvre d'addon qui permet de paramétrer les tests qunit: https://github.com/AStepaniuk/qunit-parameterize

Consultez ce lien pour simuler l'appel de getJSON dans vos méthodes d'installation / démontage, http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=505