Ich bin immer noch sehr neu im Komponententest, und um ehrlich zu sein, gibt es nichts, was ich überhaupt testen könnte, aber ich kann nicht bauen Meine App, es sei denn, ich habe mindestens einen Testfall, also habe ich versucht, den einfachsten Testfall auf dem kleinsten Codeblock des Controllers zu erstellen, und es scheint nicht zu funktionieren.Karma + PhantomJS TypeError: undefined ist kein Objekt (evauling scope.jackpot)
Ich glaube, es ist ein Fehler in meinem Testfall, und nicht in meinem Controller-Code selbst, denn wenn ich meine App im Browser mit grunt serve
anzeigen, zeigt die Konsole keine Fehler.
Dies ist der Fehler, den es gibt mir:
PhantomJS 2.1.1 (Linux 0.0.0) Controller: MainCtrl should attach a list of jackpot to the scope FAILED
/home/elli0t/Documents/Yeoman Projects/monopoly/app/bower_components/angular/angular.js:3746:53
[email protected][native code]
[email protected]/home/elli0t/Documents/Yeoman Projects/monopoly/app/bower_components/angular/angular.js:323:18
[email protected]/home/elli0t/Documents/Yeoman Projects/monopoly/app/bower_components/angular/angular.js:3711:12
[email protected]/home/elli0t/Documents/Yeoman Projects/monopoly/app/bower_components/angular/angular.js:3651:22
[email protected]/home/elli0t/Documents/Yeoman Projects/monopoly/app/bower_components/angular-mocks/angular-mocks.js:2138:60
TypeError: undefined is not an object (evaluating 'scope.jackpot') in /home/elli0t/Documents/Yeoman Projects/monopoly/test/spec/controllers/main.js (line 20)
/home/elli0t/Documents/Yeoman Projects/monopoly/test/spec/controllers/main.js:20:17
PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.04 secs/0.007 secs)
Dies ist mein Testfall:
it('should attach a list of jackpot to the scope', function() {
expect(scope.jackpot.length).toBe(2);
});
Und dies ist der Code-Block bin ich versucht, auf den Test auszuführen:
var countInJackpot = localStorageService.get('jackpot');
$scope.jackpot = countInJackpot || [
{
letter: '$',
prize: '$1,000,000 Cash',
numbers: ['$611A','$612B','$613C','$614D','$615E','$616F','$617G','$618F'],
count: [0,0,0,0,0,0,0,0]
},
{
letter: '?',
prize: '$500,000 Vacation Home',
numbers: ['?619A','?620B','?621C','?622D','?632E','?624F','?625G','?626H'],
count: [0,0,0,0,0,0,0,0]
}
];
Für den Moment möchte ich wirklich nur 1 einfachen Testfall schreiben, damit ich die App bauen kann. Momentan studiere ich Komponententests, aber ich fühle mich immer noch nicht bereit, selbst komplexere Testfälle zu schreiben. Ich werde das für später speichern.
Ich habe bei Bedarf den gesamten Inhalt der Dateien als Referenz beigefügt und kann den Inhalt der Datei "karma.conf.js" bei Bedarf einfügen.
Ich weiß, dass dieser Fehler auf dieser Seite in vielen anderen Fragen gekommen ist, habe ich durch sie heute den ganzen Tag suchen und keiner von ihnen hat mir geholfen, mit diesem Problem, damit ich meine eigene Post. Wenn weitere Informationen benötigt werden, um dieses Problem zu lösen, lassen Sie es mich wissen. Vielen Dank!
Wie wird 'scope' in Ihrem Test definiert? Scheint, dass ist, wo das Problem ist – Phil
Entschuldigung, ich habe vergessen, den Gist-Link in meinem ursprünglichen Beitrag aufzunehmen, aber ich habe es jetzt hinzugefügt, und ich werde es auch in diesem Kommentar veröffentlichen. Ich würde den Code selbst im Kommentar veröffentlichen, aber es scheint, dass es Einrückungen in Kommentaren ignoriert, und macht mehr als eine Zeile schwerer zu lesen. [Gibt es hier] (https://gist.github.com/Etregoning/b59c15248b3264323933044dbdf743eb) Es ist die Datei am unteren Rand unter dem Hauptcontroller –
StackOverflow-Code-Formatierung erfordert eine Lücke von 4 Leerzeichen links. – Phil