Karma + Webpack Angular 控制器未找到
Karma + Webpack Angular controller not found
我在这篇博客文章的帮助下使用 webpack 建立了一个 Angular 项目,该博客文章在 Github 上有一个相关的样板文件。
该应用程序本身运行良好,但是当我运行业力时,它说它找不到它试图测试的控制器。
// karma.config.js
module.exports = config => config.set({
files: ['test.webpack.js'],
preprocessors: {
'test.webpack.js': ['webpack', 'sourcemap']
},
browsers: ['PhantomJS2'],
webpack: require('./webpack.config'),
webpackMiddleware: {
noInfo: 'errors-only',
},
});
// test.webpack.js
import 'angular';
import 'angular-mocks/angular-mocks';
const testContext = require.context('./', true, /'.spec'.js$/);
testContext.keys().forEach(testContext);
我现在只有一个规格文件供MainCtrl.spec.js
.业力会运行它,但我收到错误:
参数"MainCtrl"不是一个函数,未定义
当我实际运行该应用程序时,MainCtrl
似乎加载得很好,所以我不确定为什么 Karma 无法获得它。
我也尝试将'.spec'.js
更改为仅'.js
但这会导致更多错误。
我能够通过重新思考工作流程来解决这个问题。两个主要问题是module
无法从ngMocks
全局导出(与节点导入系统存在冲突)。另一个是测试还必须首先加载所有模块文件,这对于 Karma 来说是非常典型的。
// karma.config.js
files: ['app/index.js', 'test.webpack.js']
preprocessors: {
'app/index.js': ['webpack'],
'test.webpack.js': ['webpack'],
}
// test.config.js
/* Angular is already imported by app/index.js */
import 'angular-mocks/angular-mocks';
/* MUST use `angular.mock.module`. `module` alone won't work */
beforeEach(angular.mock.module('ngculator'));
const testContext = require.context('.', true, /'.spec'.js$/);
testContext.keys().forEach(testContext);
相关文章:
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- Angular.js延迟控制器初始化
- 在控制器angular js之间共享数据
- 在一个控制器中更新服务变量,并在另一个控制器 - Angular JS中使用更新的值
- 无权访问我的控制器 Angular 中的属性.js 1.3
- 自动更新控制器Angular Metroet中的记录
- 显示控制器angular js的模态
- 解析未在控制器 [Angular JS] 中注入的函数
- 从输入中获取一个值,以便在控制器 Angular JS 中使用
- 如何调用另一个控制器(Angular js)中的函数
- 调用视图中的另一个控制器Angular
- 从另一个控制器Angular Js调用函数
- 在控制器- angular, Ionic中获取滚动后的ng-repeat索引
- 未知的供应商factoryprovider <-工厂<-控制器angular js
- 从控制器Angular JS中重构对象特定的逻辑
- 扩展UI选择控制器(angular)
- $scope变量值未在控制器Angular JS中更新
- 在控制器Angular中用ng点击定义html
- 如何将我的服务注入我的控制器angular js
- 将数据从服务器/应用程序.js传递到控制器 Angular-fullstack + multer