问题描述
我想使用 Karma 运行 sample 测试 Angular 代码。
我尝试修改上面的代码以确保该控制器将被注入以进行测试。不幸的是,inject 语句不会执行。我在 1.0.8 版中有 Angular 和 Angular-mocks,在 8.16.2 版中有 Node。我无法修改这些版本,因为我的所有项目可能会停止工作。
此外,我收到错误消息 TypeError: undefined is not an object (evaluating 'spec.$injector') in src/ProjectBundle/Resources/public/assets/vendor/bower_components/angular-mocks/angular-mocks .js(第 1715 行) workFn@src/ProjectBundle/Resources/public/assets/vendor/bower_components/angular-mocks/angular-mocks.js:1715:15.
在 Karma 的配置中,我有到 Angular、Angular-mock、JavaScript 代码和测试代码的路径。如果我尝试将路径直接添加到测试文件(带有 require 字样),则测试不起作用。
const ids = ["5ffd5eb822084969b4dc9f74","5ffd5eb822084969b4dc9f74"];
const result = [];
// Loop through each element
ids.forEach(async(id) => {
const foundResult = await Document.find({_id: id});
result.push(foundResult);
})
下面是 angular-mock.js 文件的片段。
beforeEach(inject(function(_$controller_,_$rootScope_){
console.info('test');
$controller = _$controller_;
$rootScope = _$rootScope_;
}));
以下是karma-ci.conf.js文件的片段。
window.module = angular.mock.module = function() {
var moduleFns = Array.prototype.slice.call(arguments,0);
return isspecRunning() ? workFn() : workFn;
/////////////////////
function workFn() {
var spec = getCurrentSpec();
if (spec.$injector) {
throw Error('Injector already created,can not register a module!');
} else {
var modules = spec.$modules || (spec.$modules = []);
angular.forEach(moduleFns,function(module) {
modules.push(module);
});
}
}
};
以下是 package.json 文件的片段。
module.exports = function(config) {
config.set({
frameworks: ['jasmine'],plugins : ['karma-jasmine','karma-phantomjs-launcher'],files: [
'src/ProjectBundle/Resources/public/assets/vendor/bower_components/angular/angular.js','src/ProjectBundle/Resources/public/assets/vendor/bower_components/angular-mocks/angular-mocks.js','src/ProjectBundle/Resources/public/assets/javascripts/cm/**/*.js' // contains above example file,'src/ProjectBundle/Tests/Karma/Unit/Controllers/AngularCtrlSpec.js' // contains above example test
],browsers: ['PhantomJS']
});
};
你知道我的问题有什么解决方案吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)