Yeni açılıma ve angularjs jasmine tests: Variable vm not found 'a ait yeni bir gönderiye göre Yeni Açısal testlerimde bir TypeError yaşıyorum ve sorunun ne olduğundan emin değilim. İşte benim sınavım:AngularJS Jasmine testi: TypeError: 'undefined' bir nesne değil
(function(){
'use strict';
describe('Testing DeliveriesController', function() {
beforeEach(module('app.deliveries'));
describe('Testing deliveries controller', function(){
var vm, controller;
beforeEach(inject(function($controller, $rootScope){
vm = $rootScope.$new();
controller = $controller('DeliveriesController', {$scope:vm});
}));
afterEach(function() {
vm = undefined;
controller = undefined;
});
describe('priorities length', function(){
it('it should test priority length', function() {
expect(vm.priorities.length).toBe(0);
});
});
});
});
})();
şöyle alıyorum hatadır:
PhantomJS 1.9.8 (Mac OS X 0.0.0) Testing DeliveriesController Testing deliveries controller priorities length it should test priority length FAILED
Error: [$injector:unpr] Unknown provider: DeliveriesServiceProvider <- DeliveriesService <- DeliveriesController
http://errors.angularjs.org/1.3.20/$injector/unpr?p0=DeliveriesServiceProvider%20%3C-%20DeliveriesService%20%3C-%20DeliveriesController
at /Users/rgoti/ingestion/external-ingestion/app/public/bower_components/angular/angular.js:4031
at getService (/Users/rgoti/ingestion/external-ingestion/app/public/bower_components/angular/angular.js:4178)
at /Users/rgoti/ingestion/external-ingestion/app/public/bower_components/angular/angular.js:4036
at getService (/Users/rgoti/ingestion/external-ingestion/app/public/bower_components/angular/angular.js:4178)
at invoke (/Users/rgoti/ingestion/external-ingestion/app/public/bower_components/angular/angular.js:4210)
at instantiate (/Users/rgoti/ingestion/external-ingestion/app/public/bower_components/angular/angular.js:4227)
at /Users/rgoti/ingestion/external-ingestion/app/public/bower_components/angular/angular.js:8524
at /Users/rgoti/ingestion/external-ingestion/app/public/bower_components/angular-mocks/angular-mocks.js:1916
at /Users/rgoti/ingestion/external-ingestion/app/public/src/app/deliveries/deliveries.spec.js:12
at invoke (/Users/rgoti/ingestion/external-ingestion/app/public/bower_components/angular/angular.js:4219)
at workFn (/Users/rgoti/ingestion/external-ingestion/app/public/bower_components/angular-mocks/angular-mocks.js:2475)
undefined
TypeError: 'undefined' is not an object (evaluating 'vm.priorities.length')
at /Users/rgoti/ingestion/external-ingestion/app/public/src/app/deliveries/deliveries.spec.js:23
Eğer kontrolörün kodunu gösterir misiniz? Problemi daha iyi anlamaya yardımcı olur. 'TeslimatlarController' sadece '$ scope' değil, ayrıca 'Teslimatlar' hizmetine de bağlıdır. Denetleyiciyi başlattığınızda, tüm bağımlılıkları (gerçek ya da alay edilmiş olanları) sağlamalısınız. – Stubb0rn
Haklısınız. Durum buydu. Teste enjekte edilen DeliveriesService'i ekledim ve işe yaradı. Teşekkürler – noobcoder
@ Stubb0rn lütfen yorumunuzu yanıt olarak gönderin. Bana gerçekten yardımcı oldu, ama eğer yorum olarak bırakırsan bulması kolay olmayacak. –