以前の投稿から角度を変更してフォローアップしましたangularjs jasmine tests: Variable vm not found 角度テストでTypeErrorが発生していますが、何が問題なのかわかりません。ここに私のテストでは、次のとおりです。AngularJSジャスミンテスト:TypeError: '未定義'はオブジェクトではありません
(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);
});
});
});
});
})();
次のように私が手にエラーがある:
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
あなたは、コントローラのコードを示してもらえますか?問題をよりよく理解するのに役立ちます。 'DeliveriesController'のように見えるのは、' $ scope'だけでなく 'DeliveriesService'にも依存しています。コントローラーをインスタンス化するときは、すべての依存関係(実際のものかモックされたものか)を提供する必要があります。 – Stubb0rn
あなたは正しいです。そうだった。私はDeliveriesServiceをテストに注入して追加しました。ありがとう男 – noobcoder
@ Stubb0rnあなたのコメントを回答として投稿してください。それは本当に助けになりましたが、あなたがコメントとして残しておけば、見つけるのは簡単ではありません。 –