Ich bin neu im Komponententesten und versuche, Dinge zu verstehen. Ich gebe mein Bestes, um diesem Tutorial zu folgen: http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-testacular.html#testing-filters. In meiner AngularJS App habe ich einen Filter, den ich testen muss. Ich habe Node, Testacular und Jasmine eingerichtet und läuft richtig. Der Filter, den ich versuche zu testen, ist ziemlich einfach:Testen der Filterpräsenz in einem Winkel
myApp.filter('bill_ship', function() {
return function (userData) {
var output = "---";
switch (userData) {
case "0":
output = "Billing";
break;
case "1":
output = "Shipping";
break;
}
return output;
}
});
Ich dachte, ich hatte meinen Test richtig eingerichtet, aber es schlägt konsequent fehl.
describe("Unit Testing: Filters - ", function() {
beforeEach(angular.mock.module('prismApp', ['bill_ship']));
//BillShip Filter
it('should have a bill-ship filter: ', inject(function($filter){
expect($filter('bill_ship')).not.toEqual(null);
}));
});
Es mit dieser Meldung fehl: Fehler: Argument 'fn' ist keine Funktion, bekam Zeichenfolge aus bill_ship.
Also ... wo mache ich das falsch?
Ist 'bill_ship' auch der Name des Moduls, in dem sich der 'bill_ship'-Filter befindet? Wenn sich der Filter im Modul 'prismApp' befindet, sollten Sie '[' bill_ship ']' nicht als zweiten Parameter an' angle.mock.module 'übergeben. –
Die Angular-App befindet sich in einer separaten Datei vom Filter: var myApp = angular.module ("prismApp", []); Der Filter wird genau wie gezeigt deklariert. Wenn ich den zweiten Parameter weglasse, wimmert es bei mir über einen unbekannten Provider: Fehler: Unbekannter Provider: bill_shipFilterProvider <- bill_shipFilter – MBielski
Kannst du es mit 'beforeEach (Modul ('prismApp')) versuchen;' stattdessen? Dies ist, wie wir das vorher haben, damit unsere richtig laufenden Filtertests arbeiten - das 'es (...' Funktion sieht richtig aus. –