/ / Karma-Jasmine Error - angularjs, karma-jaśmin

Błąd karma-jaśminu - angularjs, karma-jaśmin

Mam następującą złożoną konfigurację angularjs:

angular.module("a",["b","c"])
.controller("c1", ["$scope", "bservice", "cservice", function($scope,bservice,cservice){

// c1 controller code
}]);

angular.module("b",["d","e"])
.service("bservice", ["$scope", "dservice", "eservice", function($scope,dservice,eservice){

// bservice code
}]);

angular.module("c",["f","g"])
.service("cservice", ["$scope", "fservice", "gservice", function($scope,fservice,gservice){

// cservice code
}]);

angular.module("d",[])
.service("dservice", ["$scope", function($scope){

// dservice code
}]);

angular.module("e",[])
.service("eservice", ["$scope", function($scope){

// eservice code
}]);

angular.module("f",[])
.service("fservice", ["$scope", function($scope){

// fservice code
}]);

angular.module("g",[])
.service("gservice", ["$scope", function($scope){

// gservice code
}]);

Teraz piszę skrzynkę testową jaśminu dla kontrolera c1, oto mój przykładowy kod kontrolera

describe("c1 controller", function(){
var scope, controller;
var bservice, cservice;

beforeEach( module("a") );

beforeEach(inject(function(_$controller_, _$rootScope_, _bservice_, _cservice_) {
scope = _$rootScope_.$new();

controller = _$controller_("c1", {
$scope: scope,
bservice: _bservice_,
cservice: _cservice_
});

}));

it("scope should be defined", function() {
expect(scope).toBeDefined();
});

});

Ale z jakiegoś powodu test kończy się niepowodzeniem i nie pojawia się żaden komunikat o błędzie. Jedyny komunikat, który pokazuje program uruchamiający Firefoksa, NIE działa z następującymi plikami:

minErr/<@ui-build/node_modules/angular/angular.js:68:12
loadModules/<@ui-build/node_modules/angular/angular.js:4779:15
forEach@ui-build/node_modules/angular/angular.js:357:11
loadModules@ui-build/node_modules/angular/angular.js:4740:5
createInjector@ui-build/node_modules/angular/angular.js:4662:19
WorkFn@ui-build/node_modules/angular-mocks/angular-mocks.js:3160:44
[3]</ContextKarma/this.loaded@http://localhost:9876/context.js:151:7

Moje pytania to:

Czy tego rodzaju konfiguracja angularjs jest zalecana do testowania, a jeśli tak, to co robię źle lub brakuje mi, co powoduje niepowodzenie testu?

Jak mogę włączyć szczegółowe logowanie błędów w karmie?

Odpowiedzi:

1 dla odpowiedzi № 1

Pierwszą rzeczą, którą popełniłeś źle, jest: Nazwa zależności, ponieważ powinny to być ciągi zamiast zmiennych.

Zamiast więc:

angular.module("a",["b","c"]).controller("c1", [$scope, bservice, cservice, function($scope,bservice,cservice){
// c1 controller code
}]);

Powinno być:

angular.module("a",["b","c"]).controller("c1", ["$scope", "bservice", "cservice", function($scope,bservice,cservice){
// c1 controller code
}]);

Następną rzeczą, którą powinieneś zrobić, to przetestować każdą usługę i kontroler osobno, kpiąc z wymaganej podczas testu poszczególnych usług i kontrolerów.

Tutaj jest CodePen na przykład. Jeśli wyśmiejesz moduł i będziesz go poprawnie serwisować, będzie działał.