Je commence à tester les unités JS et j'ai du mal à comprendre comment créer des tests significatifs avec les espions de Jasmine.Jasmine spyOn et comment utiliser les espions en général
it('should take an array of shopping items', function() {
spyOn(checkObj, 'getTotal');
checkObj.getTotal([1, 2, 3]);
expect(checkObj.getTotal).toHaveBeenCalledWith(jasmine.any(Array));
});
Utilisation de l'extrait ci-dessus de l'essai que j'ai créé comme un exemple, je ne peux pas voir comment cela est un test utile que mon appel à GetTotal est codé en dur à l'intérieur de la spécification. Mais en même temps je voudrais m'assurer que le param passé est un tableau et non un autre type ... c'est le codage dur qui, j'en suis sûr, est faux d'une manière ou d'une autre.
Quelqu'un pourrait-il offrir un peu d'orientation sur la façon dont je pense/l'approche de ce type de scénario de test
Je pense que vous cherchez au mauvais problème. La question est: qu'est-ce que vous essayez de tester? Le code que vous avez maintenant est plutôt inutile - vous l'appelez avec un tableau et sur la ligne suivante, vérifiez s'il a été appelé avec un tableau. C'est littéralement tester votre test. En d'autres termes, ce n'est pas une chose utile à vérifier. Qu'est-ce que vous voulez vérifier ici est la meilleure question? Si vous voulez vérifier que 'getTotal' n'accepte que les tableaux, alors vous devrez probablement l'appeler avec d'autres choses et attendre une sorte d'erreur. – vlaz
Merci pour le commentaire vlaz, ce que vous avez dit est logique, il semble que je fais la mauvaise chose en utilisant toHaveBeenCalledWith pour tester l'argument et il serait préférable de simplement tester la sortie de la méthode. Je vais aussi essayer vos idées ... tout ce que je voulais vérifier, c'est qu'un tableau est passé comme argument, mais je ne sais pas si j'essaye de tester – user1806692