- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写 Karma 来测试一些 AngularJS 代码。为了使测试正确运行,某些模块必须先于其他模块运行。 Controller 和服务在模块实例化之后出现。
我的代码现在的结构方式(非常简化)是我有一个“app”文件夹,其中包含另一个名为“controllers”的文件夹。
在“app”内,我有一个 app.js 文件。在“app/controllers”内部,我有一些Controller.js。
/root
--- /app
--- app.js
--- /controllers
--- someController.js
在运行测试之前,我使用 Karma 加载所有文件。测试在源(应用程序)文件之后加载。但它加载源文件的顺序是不合需要的。它首先加载 someController.js,然后再加载 app.js。可能是因为它进行了深度优先遍历。我不是在寻找算法或任何东西,因为这就是谷歌似乎给我的一切。只是一个简单的字符串 glob 模式。
我使用的语法是“root/**/*.js”来获取“root”所有子目录中的所有文件。
如何向 Karma 指定我要在加载“app/controllers/”中的文件之前加载“/app”中的所有文件? (即广度优先遍历)
我从 Karma 文档中遵循的示例位于:http://karma-runner.github.io/0.13/plus/requirejs.html在配置 Karma 部分下。
具体:
files: [
{pattern: 'lib/**/*.js', included: false},
{pattern: 'src/**/*.js', included: false},
{pattern: 'test/**/*Spec.js', included: false},
'test/test-main.js'
],
谢谢!
最佳答案
我不知道有什么方法可以显式控制通配符的遍历策略,但是您可以手动创建多个模式来强制实现所需的顺序。如果您首先使用简单的 dir/*.js
模式,则只会匹配顶级 .js
文件,然后在第二遍中您可以使用更深入的更宽松的 dir/**/*.js
模式。
在您的情况下,这些模式将类似于:
{pattern: 'app/*.js', included: false},
{pattern: 'app/**/*.js', included: false},
<小时/>
但是,如果您有多个位置需要指定加载顺序,则维护起来可能会变得很麻烦。对于这样的情况,我发现设置构建环境以在将包含内容生成到应用程序的主 .html
文件的同时将包含内容生成到 karma 配置文件中非常有帮助 - 通常两者均适用相同的订单限制。例如,如果您使用的是 grunt-wiredep
之类的东西,那么只需添加带有自定义 fileTypes
条目的新目标即可设置正确的语法。
关于javascript - 全局语法 : Breadth first traversal to get all items in a folder using Karma,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32750092/
我是一名优秀的程序员,十分优秀!