angularjs – karma start – 传递参数

前端之家收集整理的这篇文章主要介绍了angularjs – karma start – 传递参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法通过Karma命令行传递参数然后在测试中的某处读取?例如,这是想要的:
karma start -branding="clientX"

然后在我的规范的某个地方我需要访问这个变量(我需要“clientX”值).

这有可能吗?

可以将参数传输到测试用例.这可能有点棘手.您可以做的是检查测试套件中的__karma __.config.args:
it("get karma args",function () {
    console.log(__karma__.config.args);
});

业力跑

如果你想通过karma运行传递参数,那么上面就是你所需要的.

然后,如果你做业力开始然后业力运行 – 你应该在控制台上看到:

LOG: ['--foo']

注意传递给karma run的参数如何在__karma __.config.args中结束.另请注意,在业力运行中的第一个双击 – – foo是将Karma参数与“客户参数”分开是必要的. (业力开始并没有同样的区别.)

业力开始

业力开始有所不同.

如果你使用karma init创建的默认karma.conf.js,你将无法通过karma start –single-run –foo以这种方式传递参数.你需要修改你的karma.conf.js来传递参数:

module.exports = function(config) {
  config.set({
    client: {
        args: config.foo ? ["--foo"] : [],},

如果你运行karma start –single-run –foo,那么你将获得与之前运行相同的输入.

如果我必须传递多个参数,我会扫描process.argv以过滤掉那些仅用于Karma的好处的部分,并将其余部分传递给args而不是测试每种可能性.

你可能从上面推断出,当你的业力开始时 – 单一运行 – 这个论点最终成为karma.conf.js中的config.something.

完整的例子

此示例针对Karama 1.1.x和Karma 1.2.0进行了测试.它显示了我上面讨论的相同方法,以使命令行参数通过client.args传输.这适用于业力开始和业力运行.我还添加了一个方法来传递值而不通过client.args(这是品牌推广示例).但是,此方法不适用于业力运行.

karma.conf.js:

module.exports = function(config) {
  config.set({
    basePath: '',client: {
        // Example passing through `args`.
        args: config.foo ? ["--foo"] : [],// It is also possible to just pass stuff like this,// but this works only with `karma start`,not `karma run`.
        branding: config.branding,frameworks: ['jasmine'],files: [
      'test/**/*.js'
    ],exclude: [],preprocessors: {},reporters: ['progress'],port: 9876,colors: true,logLevel: config.LOG_INFO,autoWatch: true,browsers: ['Chrome'],singleRun: false
  });
};

测试/ test.js:

it("get karma arg",function () {
    console.log("BRANDING",__karma__.config.branding);
    console.log("ARGS",__karma__.config.args);
});

如果你运行karma start –single-run –foo –branding = q,你得到:

LOG: 'BRANDING','q'
LOG: 'ARGS',['--foo']

如果你启动Karma然后使用karma run – –foo –branding = q,你会得到:

LOG: 'BRANDING',undefined
LOG: 'ARGS',['--foo','--branding=q']

如上所述,当使用karma运行时,所有内容都必须通过config.args才能在测试中看到.

原文链接:https://www.f2er.com/angularjs/140994.html

猜你在找的Angularjs相关文章