私はカルマとジャスミンでAngularJsコントローラをテストするのが初めてです。
私はこのコントローラをテストしようとしている:
:私は、私はこのエラーを取得し、このテストコードを実行しようとすると、しかし'use strict';
describe('dashboard.admin module', function() {
beforeEach(function(){
module('app.dashboard.admin');
});
var auth, scope, ctrl, window;
beforeEach(inject(function ($controller, $rootScope, $window) {
auth = Auth;
scope = $rootScope.$new(); //get a childscope
window = {
translation: $window.translation
};
ctrl = $controller("AdminCtrl", {$scope: scope, $window: window});
}));
describe('Admin Controller', function() {
it('should inject controller', function() {
expect(ctrl).toBeDefined();
});
});
});
:
angular.module('app.dashboard.admin', [])
.controller('AdminCtrl', function (locale, $log, $scope, $window, $state) {
$scope.translation = $window.translation()[locale];
$scope.showAdminBoard = false;
$scope.initModel = {
disableProgress: false,
message: $scope.translation['admin_platform_init'],
error: ''
};
$scope.adminPrivileges = {};
$scope.onGetAdminPrivileges = function() {
return $scope.adinPrivileges;
}
はここに私のテストコードです
TypeError: undefined is not an object (evaluating '$scope.translation['admin_platform_init']') (line 11)
views/dashboard.admin/admin.js:11:40
[native code]
[email protected]_components/angular/angular.js:4786:61
[email protected]_components/angular/angular.js:10607:39
bower_components/angular-mocks/angular-mocks.js:2249:23
views/dashboard.admin/admin.spec.js:113:27
[email protected]_components/angular/angular.js:4771:24
[email protected]_components/angular-mocks/angular-mocks.js:3130:26
[email protected]://localhost:9876/context.js:151:17
[email protected]_components/angular-mocks/angular-mocks.js:3097:28
views/dashboard.admin/admin.spec.js:106:22
global [email protected]/dashboard.admin/admin.spec.js:3:9
Expected undefined to be defined.
views/dashboard.admin/admin.spec.js:118:37
[email protected]://localhost:9876/context.js:151:17
私は$window
オブジェクトをモックし、angleの$ window objeをオーバーライドしようとしました私は成功しませんでした。
私はkarma.conf.jsファイルの依存関係をチェックしていますが、それらはすべてそこにあります。
私はまた、これらの質問チェックしています
Karma-Jasmine: How to test $translate.use?
が、提案されたソリューションは、本当に助けていませんでしたが。
したがって、テストを実行できるように、$scope.translation['admin_platform_init']
オブジェクトをモックする方法を見つけようとしています。
誰かが正しい方向に向けることができますか?
ありがとうございます。
あざける$ウィンドウのポイントは何ですか? 'translation'が関数であると想定されている場合、それを必要なオブジェクトを返す関数にします。 – estus