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才能在测试中看到. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |