À l'aide de types d'objet avec le Jasmin est toHaveBeenCalledWith méthode
J'ai juste commencé à l'aide de Jasmin, de sorte s'il vous plaît pardonnez la question de newbie, mais est-il possible de faire le test pour les types d'objets lors de l'utilisation de toHaveBeenCalledWith
?
expect(object.method).toHaveBeenCalledWith(instanceof String);
Je sais que je pourrais, mais c'est la vérification de la valeur de retour plutôt que de l'argument.
expect(k instanceof namespace.Klass).toBeTruthy();
Vous devez vous connecter pour publier un commentaire.
toHaveBeenCalledWith
est une méthode d'espionnage. Donc, vous ne pouvez appeler sur espion comme décrit dans la docs:.toBeTruthy()
? Il semble que c'est inutile.toBeTruthy()
appel. Voir jsfiddle.net/2doafezv/2 pour preuve.obj.method.mostRecentCall
doit devenirobj.method.calls.mostRecent()
dans le Jasmin 2.0. Aussi, à l'aide dejasmine.any()
, comme décrit dans l'autre réponse, est plus claire et plus mignon. Enfin, cette réponse prend du temps de faire le point; essentiellement, tout ce que vous avez écrit d'ailleursexpect(obj.method.mostRecentCall.args[0] instanceof String).toBeTruthy();
n'est pas vraiment nécessaire de vous expliquer.J'ai découvert un encore plus cool mécanisme, à l'aide de le jasmin.tout" >
jasmin.tout()
, comme je l'ai trouver en prenant les arguments de part en part sous-optimales pour la lisibilité.En CoffeeScript:
expect(obj.method).toHaveBeenCalledWith({done: jasmine.any(Function)})
. Très utile.new String('world')
lors de l'utilisation detoHaveBeenCalledWith(...arguments)
. Cliquez ici pour comprendre pourquoi c'est important.jasmin.any(Function)
m'a sauvé la vie, merci