现在我的Karma配置包含以下文件:
files: [
'vendor/vendor.js',
'vendor/angular-mocks/angular-mocks.js',
'src/components/security/index.js',
'src/components/security/authentication.js',
'src/components/security/login-controller.js',
'src/components/filters/index.js',
'src/components/filters/toDate.js',
'src/components/services/index.js',
'src/components/services/alert.js',
'src/menu/index.js',
'src/menu/menu-controller.js',
'src/user/index.js',
'src/manage/index.js',
'src/manage/user/manage-user-controller.js',
'src/manage/channel/manage-channel-controller.js',
'src/stream/index.js',
'src/stream/stream-controller.js',
'src/messages/index.js',
'src/messages/messages-controller.js',
'src/app.js',
'src/**/*.spec.js'
],
文件vendor/vendor.js
由Gulp任务自动创建,该任务使用我的bower配置连接所有供应商文件。这是我自己的Javascript代码很难包含,因为订单很重要。文件夹中的index.js
文件定义模块(及其路由),因此必须在单个文件之前加载。 app.js
总是必须是最后一次。
所以我的问题是我如何更聪明地做这件事,例如使用首先包含所有index.js
文件然后包含所有其他文件的glob?
答案 0 :(得分:2)
这正是RequireJS的用途。您可以在已部署的代码中使用它,但您也可以将它用于测试。
如果你这样做,你的“karma.conf.js”会变得更短,更不稳定。您的RequireJS配置文件指定了一些依赖关系映射。每个测试规范最终都会指定它需要哪些依赖项,或者在“define”调用中以“声明”方式,或者有时通过“require”函数手动执行(有时需要后者来处理循环引用问题)。
答案 1 :(得分:2)
我想问这个问题给了我需要的想法:)这有效:
files: [
'vendor/vendor.js',
'vendor/angular-mocks/angular-mocks.js',
'src/*/**/index.js',
'src/*/**/*.js',
'src/app.js',
'src/**/*.spec.js'
],
在index.js之后添加* .js会产生如下调试消息:
src/manage/index.js ignored. Already in the list.
出色!