web-dev-qa-db-fra.com

Rediriger les appels vers console.log () vers la sortie standard dans les tests Jasmine

J'utilise Jasmine via le plugin jasmine-maven, et j'aimerais voir les messages console.log () dans la sortie de la construction Maven. Existe-t-il un moyen d'y parvenir?

Si console.log () ne peut pas être redirigé, existe-t-il un autre moyen de se connecter à partir de mes tests afin qu'ils apparaissent sur la sortie de la construction Maven?

J'exécute ces tests sur Jenkins d'une manière sans tête, et je voudrais un moyen d'obtenir une sortie de débogage à partir des tests.

60
Lóránt Pintér

Essayer

console.info('foo')

À partir des javascripts de test.

54
user1338062

Vous pouvez utiliser:

jasmine.log("I've got a big log.");

NB: Voir douglas-treadwell's commentaire ci-dessous.

Cela fait référence à Jasmine 1.x. Avec Jasmine 2.0, utilisez directement console.log directement.

37
BanksySan

Si vous exécutez dans un nœud env. Vous pourriez utiliser

process.stdout.write ("ceci sera envoyé à la console");

11
Geoffrey Samper

J'utilise jasmine 2 via guard et phantom js et ont constaté que la norme console.log les messages dans les tests sont très bien sortis sur la console du runner de spécification jasmine.

J'ai également constaté que console.log les messages dans les éléments de code javascript que je teste sont écrits dans stdout mais pas console.log messages dans les tests eux-mêmes.

3
Dave Sag

Je pense que n'est pas possible .

J'ai dû écraser l'implémentation console.log dans le chargeur de spécifications. soit (en utilisant jQuery):

var console = {
    panel: $('body').append('<div>').css({position:'fixed', top:0, right:0,background:'transparent'}),
    log: function(m){
        this.panel.prepend('<div>'+m+'</div>');
    }       

};
        console.log('message 1');
        console.log('message 2');

ici vous avez un exemple fonctionnel

3
Martin Borthiry

Si vous cherchez désespérément une sortie dans une fenêtre de terminal afin que vous puissiez avoir des données à revoir une fois le test terminé et le navigateur fermé, console.error() semble faire l'affaire.

3
Professor Tom

Ran dans le même problème en utilisant grunt/karma/jasmine (karma-jasmine 0.2.2) -

Pour suivre ce que Dave Sag a dit, j'ai trouvé que tous mes messages console.log Du code que je testais fonctionnaient bien, mais rien de mes describe() {} et it() {} bloque tout journal.

Je ai constaté que vous pouvez vous connecter à partir d'un bloc beforeEach() {}. Au moins cela a fonctionné pour moi:

beforeEach(function() {
  this.model = new blahModel();
  console.log('this.model = ', this.model);
});

Notez que cela se connecte uniquement dans la console du navigateur et pour une raison quelconque, ne se connectera pas en ligne de commande. Un peu étrange lorsque les instructions console.log du bloc de code testé se connectent en ligne de commande. J'ai également trouvé ce qui semble être une meilleure approche pour une consignation cohérente ici .

MISE À JOUR: En fait, je vois que la journalisation fonctionne également pour elle, je pense que j'ai eu d'autres erreurs qui empêchaient cela.

2
Skip Jack

1) Allez dans le répertoire de votre projet où vous avez votre pom.xml. Exécutez la commande suivante dans cmd. mvn jasmine: bdd

2) Vous obtiendrez l'URL localhost: localhost: 8234 (juste un exemple).

3) Exécutez cette URL dans le navigateur. Maintenant, tous vos cas de test sont exécutés.

4) Faites l'élément Inspecter de cette page. Dans la console du navigateur, vous pourrez voir toutes les traces console.log () ou console.error ().

1