我编写的代码是:
element(by.className('charge')).getText()
.then(function(text){
var blabla = "Is this my string?";
expect(text.match(blabla)).toBe(true);
console.log(text);
});
甚至我的控制台输出等于我的 blabla 变量, 我得到结果:
Expected [ 'Is this my string' ] to be true.
没有任何“?”签名。
这怎么可能?
最佳答案
match
的参数是:
A regular expression object. If a non-RegExp object obj is passed, it is implicitly converted to a RegExp by using new RegExp(obj).
所以不要给它传递一个字符串。明确地向它传递一个正则表达式对象(因为与将字符串转换为正则表达式并且必须处理两个级别的语法来转义相比,这涉及的痛苦要少得多)。
正则表达式将 ?
视为特殊字符(在您的代码上下文中,它表示“g
应出现 0 次或 1 次”。您需要转义问题如果您想匹配它们,请标记。
var blabla = /Is this my string\?/;
就是说,如果你想匹配整个字符串,将其作为测试会更容易:
var blabla = "Is this my string?";
expect(text).toBe(blabla);
关于javascript - 字符串变量不接受 "?"符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30167298/