Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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_Protractor_Bdd - Fatal编程技术网

Javascript 微调不是量角器中的功能

Javascript 微调不是量角器中的功能,javascript,angularjs,protractor,bdd,Javascript,Angularjs,Protractor,Bdd,我无法在量角器中修剪结果,然后将其传递到数组中。该字段包含一个字符串,该字符串将形成一个JSON对象 我传入字段元素(by.id(fieldName2)).sendKeys(“{”Name:“JoeNew”}”) 然后使用browser.params.newValues.push(元素(by.id(fieldName2)).getAttribute('value'))将其推入数组中。导致/{“Name”:“JoeNew”}存储在数组中 然后,我重新加载页面,并检查该字段的内容是否确实是我想要存储

我无法在量角器中修剪结果,然后将其传递到数组中。该字段包含一个字符串,该字符串将形成一个JSON对象

我传入字段
元素(by.id(fieldName2)).sendKeys(“{”Name:“JoeNew”}”)

然后使用
browser.params.newValues.push(元素(by.id(fieldName2)).getAttribute('value'))将其推入数组中。导致
/{“Name”:“JoeNew”}
存储在数组中

然后,我重新加载页面,并检查该字段的内容是否确实是我想要存储的内容,但由于它是JSONified的,它将返回为:

{
    "Name":"JoeNew"
}
为了比较两者,我需要对其进行
trim()
处理,以便将其还原为
{“Name”:“JoeNew”}
,以便进行比较

browser.params.updatedValues.push(trimResult(element(by.id(fieldName2)).getAttribute('value')));

function trimResult(toTrim) {
    return toTrim = toTrim.trim();
};
遗憾的是返回
失败:toTrim.trim不是一个函数
。但是,我能够执行类似于其他字段类型的任务,如
Date.parse(Date)
等,而不会出现问题

有人能帮忙吗

编辑:

我们决定将这两个阵列与以下内容进行比较:

protractor.promise.all(browser.params.updatedValues).then(function (resolvedValues) {
    console.log(resolvedValues);
    browser.params.updatedValues = resolvedValues;

    expect(browser.params.updatedValues).toEqual(browser.params.newValues);
});
量角器中的函数以promise的形式返回值,因此要使用
trim()
,应先获取值,然后执行操作。这是怎么做的-

browser.params.updatedValues.push(trimResult(element(by.id(fieldName2)).getAttribute('value')));

function trimResult(toTrim) {
    return toTrim.then(function(val){
        return val.trim();
    });
};

编辑:但是
push()
函数不会等待
trimsult()
函数的承诺返回。下面是一个关于如何推送值的示例-

element(by.id(fieldName2)).getAttribute('value').then(function(val){
    browser.params.updatedValues.push(val.trim());
});


希望有帮助。

谢谢@girish sortur。这消除了不允许修剪的量角器错误,但它实际上并没有修剪结果,并且仍然将其记录在扩展形式中。感谢@DanHodson指出这一点。这是因为push不会等待函数
trimResult()
返回承诺形式的值。更新答案,包括它。嗨@girish sortur谢谢你的编辑。我已尝试应用这两个选项。第一个函数没有使用修剪函数,第二个函数实际上没有插入到数组中。我还应该解释,当我尝试比较这两个数组时,我解决了承诺。我现在也编辑了我的原始问题,以反映这一点。再次感谢您抽出时间提供帮助:)@DanHodson我已将
trim()
函数添加到缺少的值中。能否检查
getAttribute()
函数是否返回有效值?另外,我认为在比较两个数组时,不需要解决承诺问题,因为数组是本地存储的,它与量角器本身无关。谢谢@girish sortur我终于有生意了!最后,我使用了您发布(接受)的原始答案,而不是使用trim,我使用了
JSON.stringify()
,并使用
.replace()
删除了所有多余的\\n字符。可能不是最优雅的解决方案,但我现在通过了测试!非常感谢!
trimResult(element(by.id(fieldName2)).getAttribute('value'));

function trimResult(toTrim) {
    toTrim.then(function(val){
        browser.params.updatedValues.push(val.trim());
    });
};