【发布时间】:2014-12-23 00:18:17
【问题描述】:
我正在尝试使用 Node.js 对 angularjs 控制器进行单元测试。我正在使用 gulp.js 和 mocha 通过 gulp-mocha 运行测试。
这就是我的gulpfile.js 现在的样子:
(function () {
var gulp = require('gulp');
var mocha = require('gulp-mocha');
gulp.task('default', function () {
return gulp
.src('Scripts/Tests/*.js', { read: false })
.pipe(mocha({
ui: 'tdd',
reporter: 'dot',
globals: {
angular: require('./Scripts/angular.js')
}
}));
});
})();
这是正在测试的代码:
(function () {
var application = angular.module('Main');
application.controller('MainController', ['$scope', function ($scope) {
$scope.isDisabled = function () {
return true;
};
}]);
})();
这是测试文件本身:
(function () {
var chai = require('chai');
var assert = chai.assert;
angular.module('Main', []); // Create an empty module
require('../MainController.js'); // Fill the module with the controller
suite('Main Controller', function () {
test('isDisabled always true', function () {
var controllerFactory = angular.injector.get('$controller');
var controller = controllerFactory('MainController', {
'$scope': {}
});
var result = controller.isDisabled();
assert.isTrue(result);
});
});
})();
为了让我的测试和我正在测试的文件能够正常工作,我需要将 angular 设为全局。但是,在gulpfile.js 中对require 的调用给了我一个Reference Error: window is not defined 错误。这是有道理的,因为我在 Node.js 中运行。
在 Node.js 中加载 Angular 需要做什么?
【问题讨论】:
标签: angularjs node.js unit-testing mocha.js gulp