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