karma start configs/karma.conf.js
)describe('IndexController', function () {
beforeEach(module('myApp'));
var ctrl, scope;
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
ctrl = $controller('IndexController', {
$scope: scope
});
}));
it('should add name parameter to scope', function () {
expect(scope.name).toBeDefined();
});
});
var myApp = angular.module('myApp', []);
myApp.controller('IndexController', function ($scope) {
$scope.name = 'bob';
});
jasmine-node test/ --junitreport
Message:
TypeError: object is not a function
Stacktrace:
TypeError: object is not a function
at null.<anonymous> (/tmp/tests/test/unit/controllerSpec.js:38:16)
at Object.<anonymous> (/tmp/tests/test/unit/controllerSpec.js:36:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
答案 0 :(得分:0)
beforeEach()
接受一项功能。请确保module('myApp')
和inject(...)
返回实际的函数定义。 Jasmine的beforeEach就像“在每次测试之前调用传递的函数”,所以你可能想要:
beforeEach( function(){ module('myApp') } );
我对业力不熟悉,但在done()
中使用茉莉花的beforeEach()
方法是这样的:
var valueForEachTest = null;
beforeEach( function(done) {
doSomething( function(value){
valueForEachTest = value;
done();
});
} );
不使用done()
调用会破坏我的测试,因为我在那里进行了一些异步调用(也许Jasmine不等待beforeEach完成?)。
答案 1 :(得分:0)
Angular在浏览器中运行。它不会在节点中运行。至少,不是没有a lot of effort。
已尝试port it to node,但该项目的目的是为搜索引擎优化渲染角度页面服务器端。除非你有充分的理由,否则你不应该尝试在Node中测试Angular应用程序。