Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 持久变量量角器_Javascript_Angularjs_Selenium Webdriver_Protractor_Angularjs E2e - Fatal编程技术网

Javascript 持久变量量角器

Javascript 持久变量量角器,javascript,angularjs,selenium-webdriver,protractor,angularjs-e2e,Javascript,Angularjs,Selenium Webdriver,Protractor,Angularjs E2e,我试图在Postman中设置类似于环境/全局变量的东西。Postman将这些变量存储在JSON中,当您在测试中修改它们时,它们将被永久地更改为新值。例如: postman.setEnvironmentVariable("variable1", parseInt(postman.getEnvironmentVariable) +1); 此函数将在请求开始时将环境变量增加1。在我的real Postman测试中,我使用自定义函数根据以前使用的条形码计算有效的EAN13条形码,因为它们必须是唯一的

我试图在Postman中设置类似于环境/全局变量的东西。Postman将这些变量存储在JSON中,当您在测试中修改它们时,它们将被永久地更改为新值。例如:

postman.setEnvironmentVariable("variable1", parseInt(postman.getEnvironmentVariable) +1);
此函数将在请求开始时将环境变量增加1。在我的real Postman测试中,我使用自定义函数根据以前使用的条形码计算有效的EAN13条形码,因为它们必须是唯一的


在量角器中是否可以实现类似的功能?

使用
'params'
对象存储数据。您可以在配置文件中进行设置


从浏览器对象访问,如
browser.params.login
。您可以更改可以在另一个测试中检索的对象的值。

我找到了一个优雅的解决方案。我在JSON对象中导入我的
params
,如下所示:

global.DATA_PATH = './data/environment.json';
global.fs = require(fs);
exports.config = {
    ...
    params: {
        data = require(global.DATA_PATH)
    }
    ...
};
然后在我的JSON对象中,我将如下定义数据:

{
    "variable1": "blah"
}
现在,我可以通过代码中的普通对象点符号访问数据:

this.modifyVariable1 = function(value) {
    params.data.variable1 = value;
}
由于这只是修改参数中的变量
params.data.variable1
,因此我使用
中的nodejs模块
fs
将其与文件同步:

afterAll(function() {
    global.fs.writeFile(global.DATA_PATH, (JSON.stringify(params.data), null, 4), 'utf8);
});
这只需要在完成spec时运行,因为对params对象的更改会通过每个
it
语句持久化


希望这能帮助其他想尝试类似东西的人

但是,一旦所有测试都运行了,参数不会重置回原来的状态吗?这不起作用,因为EAN13条形码突然不再是唯一的,我必须在每次运行测试时推断出要使用的条形码。您是对的,测试完成后它将不会持续。process.env.somevariable也不会使其永久化。把这个值存储在一个文件中怎么样?我确实想到了这个,但是我找不到任何方法来以任何简洁的方式来实现。我应该定义一个未实例化的全局变量,然后定义一个helper函数,并在Jasmine的beforeach或afterEach函数中调用它吗?
afterAll(function() {
    global.fs.writeFile(global.DATA_PATH, (JSON.stringify(params.data), null, 4), 'utf8);
});