我对Angularjs很新。我有一个单页面应用程序,其中index.html是根页面。它包含以下内容
的index.html
'use strict';
angular.module('myApp', [ 'ngRoute', 'ngAnimate', 'ngSanitize',
'ui.bootstrap', 'checklist-model', 'blockUI','isteven-multi-select' ]);
var App = angular.module('myApp');
//ngroute code
我有一个链接到index.html的app.js文件,当用户使用ngRoute点击index.html中的链接时会加载相应的页面。
我的app.js页面看起来像这样
app.js
'use strict';
App.controller('SearchCifCtrl', [ '$scope', '$location', '$uibModal',
'WorkflowService', 'ConstantService', function($scope, $location, $uibModal,
WorkflowService, ConstantService) {
//some code
} ]);
现在,当用户点击index.html中的一个链接时,会加载一个search_name.html和search_name_controller.js页面
search_name_controller看起来像这样。
search_name_controller.js
describe('search_name_controller', function () {
beforeEach(function() {
module('myApp');
});
var $controller;
beforeEach(inject(function(_$controller_){
$controller = _$controller_;
}));
//code to test method
});
它是单页面应用程序angular.module语句只能在app.js文件中编写。它不是在任何其他js文件中编写的。现在我想使用KARMA测试search_name_controller.js。我已经编写了如下所示的测试代码
search_name_controller.test.js
{{1}}
当我尝试运行此测试时,我收到错误,因为“ $ controller不是函数”。我觉得错误是因为angular.module部分未在search_name_controller.js文件中定义。当我尝试添加它时,我能够运行测试。但我不允许对现有代码进行任何更改。有没有办法我的测试文件可以读取app.js文件的angular.module部分,即使我为search_name_controller.js编写测试场景。
请帮助
答案 0 :(得分:0)
beforeEach(inject(function($controller){
controller = $controller('SearchCifCtrl', {
$scope: scope
});
}));
//试试这个注入你的控制器