5 Stimmen

AngularJS + Testacular / Jasmine Einheitstests: Ausgeführt 0 von 0 ERFOLG

Ich versuche, Unit-Tests für ein AngularJS-Projekt zu schreiben. Das Projekt basiert auf Angular-Seed und verwendet Testacular, um Tests auszuführen. Jeder Versuch, test.sh Skript ausführen endet immer mit "Executed 0 von 0 SUCCESS".

Ich habe diesen supereinfachen "Test" ausprobiert:

describe('Testing Jasmine', function() {
  console.log('describe');
  var test = 'test';

  it('should be test', function() {
    console.log('it');
    expect(test).toEqual('test');
  });
});

Das Ergebnis ist, dass nur "describe" protokolliert wird, der "it"-Teil wird übersprungen. Wenn ich das Gleiche auf einem sauberen Angular-Seed-Klon versuche, funktioniert alles - also gehe ich davon aus, dass das Testsystem selbst mit Testacular und Jasmine korrekt funktioniert. Unser Projekt basiert auf Rails, aber die saubere Angular-Seed, die ich für den Vergleich getestet wurde, läuft auf Apache, so dass ich dachte, dass dies der Unterschied sein könnte - durcheinander Pfade oder etwas in diesem Rails-Projekt.

Aber es gibt keine Fehlermeldungen, e2e-Tests funktionieren... und auch ich nehme an, dass, wenn einige Dateien fehlten oder Pfade falsch waren, es nicht in der Lage wäre, zu protokollieren, dass "beschreiben" in Tests - wenn ich richtig verstehe dies bedeutet, dass Jasmine die richtige Datei verarbeitet (es gibt keine anderen Abhängigkeiten in diesem Pseudo-Test). Wie ist es möglich, dass der "describe"-Teil einwandfrei funktioniert und nur der "it"-Teil übersprungen zu werden scheint?

Für jeden Hinweis oder jede Hilfe wäre ich dankbar.

6voto

Xesued Punkte 4147

Wenn Sie Unit-Tests durchführen, nehmen Sie die Datei angular-scenario.js nicht in Ihre testacular-Konfigurationsdatei auf. Das würde die Unit-Tests unterbrechen.

2voto

jwanga Punkte 4016

Die e2e-Prüfung in der Testphase hat noch einen langen Weg vor sich. Ich habe eine Weile mit diesem Problem gekämpft. Es stellt sich heraus, dass die linke Seite eines expect eine der Methoden sein muss, die in der Angular-Dokumentation definiert sind: http://docs.angularjs.org/guide/dev_guide.e2e-testing .

Ein Beispiel ist folgendes

describe('Testing Jasmine', function() {

  it('should be test', function() {
    expect(element('foo').count()).toEqual(1);
  });

});

Denken Sie daran: Wenn Sie keinen der vorgeschriebenen Methodenaufrufe in das expect eingeben, wird testacular das 'it' nicht ausführen

1voto

A Kumar Punkte 29

Bitte überprüfen Sie die Reihenfolge der Javascript-Dateien.

Über ein ähnliches Problem wurde in Testacular und Die Neuordnung der js-Dateien hat das Problem behoben .

1voto

Mateusz W Punkte 1891

Stellen Sie außerdem sicher, dass Sie eines dieser Attribute auf der zu testenden Seite verwenden:

'ng:app', 'ng-app', 'x-ng-app', 'data-ng-app'

Denn wenn die Funktion angularInit() kein Element mit einem dieser Argumente findet, startet der Läufer nicht.

Dies ist besonders wichtig, wenn Sie Angular Test Runner auf Webage verwenden möchten, die nicht über ng-app verfügt - mit der aktuellen Version wird es einfach nicht funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X