javascript Qunit parametrizado pruebas y burlas



(4)

Para burlarse de las solicitudes de ajax, puedes intentar algo como esto ...

Aquí está la función que quiere probar:

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

Aquí está el caso de prueba:

    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');
    });

Básicamente está anulando la función ajax de jQuery y luego verifica las 2 cosas siguientes: - el valor que se pasó a la función ajax - invoca la devolución de llamada exitosa y afirma que hizo lo que se suponía que debía hacer

https://ffff65535.com

Tengo dos preguntas:

¿Puedes tener pruebas unitarias parametrizadas en qunit?

¿Cómo se burla de qunit, por ejemplo burlándose de una llamada getJSON ?

Gracias



En lugar de anular la función AJAX de jQuery, también podría usar el complemento jQuery Mockjax desarrollado por .appendTo. Este plugin básicamente hace lo que sugiere la otra respuesta, pero permite burlas mucho más sofisticadas. Por ejemplo, si tienes la función:

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

Puede simularlo con mockjax simplemente llamando a la función mockjax, que se incluye automáticamente en jQuery:

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

La segunda función de burlarse se puede incluir en un archivo JavaScript externo, digamos "mocks.js", y la única otra cosa que se debe hacer es incluir la biblioteca mockjax (que se puede encontrar en https://github.com/appendto). / jquery-mockjax / ). Lo único a tener en cuenta es que esto solo se burlará de las llamadas jQuery ajax, no de todas las XMLHttpRequests. Si quieres hacer eso, sigue los consejos de @ bertvh y usa Sinon.js.






qunit