unit test example javascript tdd bdd jasmine

javascript - example - jasmine unit test install



Usando tipos de objetos con el método de Jasmine toHaveBeenCalledWith (2)

Acabo de comenzar a usar Jasmine, así que, por favor, perdone la pregunta de los novatos, ¿pero es posible probar los tipos de objetos al usar toHaveBeenCalledWith ?

expect(object.method).toHaveBeenCalledWith(instanceof String);

Sé que podría hacerlo, pero está verificando el valor de retorno en lugar del argumento.

expect(k instanceof namespace.Klass).toBeTruthy();


Descubrí un mecanismo aún más frío, usando jasmine.any() , ya que encuentro que desarmar los argumentos a mano es subóptimo para la legibilidad.

En CoffeeScript:

obj = {} obj.method = (arg1, arg2) -> describe "callback", -> it "should be called with ''world'' as second argument", -> spyOn(obj, ''method'') obj.method(''hello'', ''world'') expect(obj.method).toHaveBeenCalledWith(jasmine.any(String), ''world'')


toHaveBeenCalledWith es un método de un espía. Así que solo puedes llamarlos a un espía como se describe en los docs :

// your class to test var Klass = function () { }; Klass.prototype.method = function (arg) { return arg; }; //the test describe("spy behavior", function() { it(''should spy on an instance method of a Klass'', function() { // create a new instance var obj = new Klass(); //spy on the method spyOn(obj, ''method''); //call the method with some arguments obj.method(''foo argument''); //test the method was called with the arguments expect(obj.method).toHaveBeenCalledWith(''foo argument''); //test that the instance of the last called argument is string expect(obj.method.mostRecentCall.args[0] instanceof String).toBeTruthy(); }); });