无法将参数从命令传递到grunt文件

时间:2014-09-25 05:12:58

标签: javascript gruntjs jasmine protractor

我正在使用下面的代码来获取在量角器配置文件中使用的参数

protractor: {

      options: {
        keepAlive: true,
        configFile: "test/config.js",
        args:{
            params:{
                user:"user1",
                password:"password1"

            }
        }
      },

并在量角器conf文件中检索为browser.params.user,browser.params.password

这些是工作文件。 我想从命令更改用户和密码值。 如何更改值?

3 个答案:

答案 0 :(得分:0)

这是一个简单的解决方法:

将参数传递给grunt任务时:

grunt e2e --user=alex --password=password

它可以

grunt.option('user')

然后,您可以使用以下命令编辑配置中的值:

var protConfig = grunt.config.get('protractor');
protConfig.options['someKey']=newValue;
grunt.config('protractor', protConfig);
grunt.task.run('protractor');

不确定这是最好的方法,但它对我来说很好。 还要注意我们正在包装量角器任务而不是立即调用它

答案 1 :(得分:0)

如何在量角器规范中获取--user参数?

答案 2 :(得分:0)

在下面的代码中,我注册了一个任务" myprotractor"并且任务在作为参数的任务之后将作为参数进入匿名函数:

grunt myprotractor:dev:pwd

module.exports = function(grunt) {
    grunt.registerTask('myprotractor', function(user, pwd) {
        console.log(user + pwd);
        grunt.config('protractor', {
            options: {
                keepAlive: true,
                configFile: "test/config.js",
                args: {
                    params: {
                        user: user,
                        password: pwd

                    }
                }
            }
        });

        //here I am running the task
        grunt.task.run([
            'protractor'

        ]);
    });
};

如果您需要,可以为量角器配置2个目标,具有一些通用配置,并根据您希望它们来自cmd或配置来设置args。

grunt myprotractor:cmd:dev:pwd

module.exports = function(grunt) {
    grunt.registerTask('myprotractor', function(target, user, pwd) {
        console.log(user + pwd);
        grunt.config('protractor', {
            options: {
                keepAlive: true,
                configFile: "test/config.js"
            },
            cmd: {
                options: {
                    args: {
                        params: {
                            user: user,
                            password: pwd

                        }
                    }
                }
            },
            config: {}
        });


        //here I am running the task with a target
        grunt.task.run([
            'protractor:' + target

        ]);
    });
};