Je suis en fait nouveau à JavaScript et Jasmine. Donc, cela pourrait être quelque chose de vraiment évident qui fixe mon problème mais je ne peux pas le voir.
Je veux vérifier si (une application déjà existante) Appelle d'application JavaScript console.error()
lors du chargement. Je ne vois pas vraiment de manière à comprendre cela avec Jasmine. J'ai inclus le fichier JavaScript ainsi que le fichier de spécifications dans le SpecRunner.html
. Mais je suppose que je dois en quelque sorte "instancier" l'application afin de tester si elle jette des erreurs sur la console, non?
Ou devrais-je inclure le SpecRunner.html
Code uniquement à cet effet dans le code HTML de l'application?
Vous pouvez espionner console.error
comme ça:
beforeEach(function(){
spyOn(console, 'error');
})
it('should print error to console', function(){
yourApp.start();
expect(console.error).toHaveBeenCalled();
})
Vous pouvez remplacer la fonction Standard Console.Error comme ceci:
//call the error function before it is overriden
console.error( 'foo' );
//override the error function (the immediate call function pattern is used for data hiding)
console.error = (function () {
//save a reference to the original error function.
var originalConsole = console.error;
//this is the function that will be used instead of the error function
function myError () {
alert( 'Error is called. ' );
//the arguments array contains the arguments that was used when console.error() was called
originalConsole.apply( this, arguments );
}
//return the function which will be assigned to console.error
return myError;
})();
//now the alert will be shown in addition to the normal functionality of the error function
console.error( 'bar' );
Cette solution fonctionne avec Jasmin ou autre chose. Il suffit de mettre le code ci-dessus avant que les autres codes et tout appel après cela sur console.error()
appellera la fonction remplacée.
utilisez Tothow and Tothrowerror http://jasmine.github.io/edge/introduction#ssection-section-section-_and.throwError