【发布时间】:2014-10-09 02:30:53
【问题描述】:
Angular 测试非常新……使用 1.3.0.rc0。首先,我尝试做一些简单的事情:获取我设置的常量的值。在 config.js 中,我有以下内容:
(function () {
'use strict';
var app = angular.module('app');
// create app configuration
var appConfig = {
version = '0.0.1.0',
debugMode = true
};
app.constant('config', appConfig);
app.config([function ($logProvider, config) {
// set the debugging setting of the app > same setting for the app
if ($logProvider.debugEnabled) {
$logProvider.debugEnabled(config.debugMode);
}
}]);
})();
我尝试了很多东西来编写我的测试(使用 jasmine 和 karma),但我一直收到一个错误:
Error: [$injector:modulerr] Failed to instantiate module app due to:
TypeError: 'undefined' is not an object (evaluating '$logProvider.debugEnabled').
我知道这是 angular-mocks.js 文件中的一个错误,但已经解决了。无论如何,无论我写什么测试,它都不起作用。这就是我现在正在使用的东西,知道它存在问题。
'use strict';
describe('config.js', function () {
var logProvider;
beforeEach(module(inject(function ($log) {
logProvider = $log;
})));
beforeEach(module('app', logProvider));
it('should set the config constant to the app global configuration settings', function () {
var $injector = angular.injector(['ng', 'app']);
var settings = $injector.get('config');
//var settings = inject(config);
expect(settings.debugMode).toBe(true);
});
});
我这样做对吗?如果是这样,有没有办法绕过 $logProvider 的测试问题?
【问题讨论】:
标签: angularjs unit-testing karma-runner karma-jasmine