这是控制器和测试:
// app/scripts/controllers/main.js 'use strict'; angular.module('GloubiBoulgaClientApp') .controller('MainCtrl',function ($scope) { });
这是测试文件:
'use strict'; describe('Controller: MainCtrl',function () { // load the controller's module beforeEach(module('GloubiBoulgaClientApp')); var MainCtrl,scope; // Initialize the controller and a mock scope beforeEach(inject(function ($controller,$rootScope) { scope = $rootScope.$new(); MainCtrl = $controller('MainCtrl',{ $scope: scope }); })); it('should attach a list of awesomeThings to the scope',function () { expect(true).toBe(true); }); });
因果报应
module.exports = function(config) { config.set({ // base path,that will be used to resolve files and exclude basePath: '',// testing framework to use (jasmine/mocha/qunit/...) frameworks: ['jasmine'],// list of files / patterns to load in the browser files: [ 'app/bower_components/angular/angular.js','app/bower_components/angular-mocks/angular-mocks.js','app/bower_components/angular-resource/angular-resource.js','app/bower_components/angular-cookies/angular-cookies.js','app/bower_components/angular-sanitize/angular-sanitize.js','app/scripts/*.js','app/scripts/**/*.js','test/mock/**/*.js','test/spec/**/*.js' ],// list of files / patterns to exclude exclude: [],// web server port port: 8080,// level of logging // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG logLevel: config.LOG_INFO,// enable / disable watching file and executing tests whenever any file changes autoWatch: true,// Start these browsers,currently available: // - Chrome // - ChromeCanary // - Firefox // - Opera // - Safari (only Mac) // - PhantomJS // - IE (only Windows) browsers: ['PhantomJS'],// Continuous Integration mode // if true,it capture browsers,run tests and exit singleRun: false }); };
PhantomJS 1.9.2 (Linux) Controller: MainCtrl should attach a list of awesomeThings to the scope Failed Error: [ng:areq] Argument 'MainCtrl' is not a function,got undefined http://errors.angularjs.org/1.2.8-build.2094+sha.b6c42d5/ng/areq?p0=MainCtrl&p1=not%20a%20function%2C%20got% 2 0undefined at assertArg (--obfuscated-path--GloubiBoulga/GloubiBoulgaClient/app/bower_components/angular/angula r.js:1362) at assertArgFn (--obfuscated-path--GloubiBoulga/GloubiBoulgaClient/app/bower_components/angular/angu lar.js:1373) at --obfuscated-path--GloubiBoulga/GloubiBoulgaClient/app/bower_components/angular/angular.js:6763 at --obfuscated-path--GloubiBoulga/GloubiBoulgaClient/test/spec/controllers/main.js:15 at invoke (--obfuscated-path--GloubiBoulga/GloubiBoulgaClient/app/bower_components/angular/angular.j s:3704) at workFn (--obfuscated-path--GloubiBoulga/GloubiBoulgaClient/app/bower_components/angular-mocks/angular -mocks.js:2120)
我想知道为什么会发生这种情况,我试图找到一些关于使用angularjs进行业力初始化的文档.但是我找到的大多数文档只是重复相同模式的虚拟教程(比如虚拟待办事项列表,但是使用手机……)
好像$controllerProvide.register无法解析我的控制器名称.
但指令测试工作正常……
感谢您的关注.
编辑注释:我在这个帖子中用MainCtrl替换了控制器PersonCtrl,因为它让人们在哪里看起来很困惑.现在,MainCtrl是我发现的最简单的失败示例.
此问题仅影响我的控制器(所有这些),但服务和指令的测试正在按预期工作