如何在正则表达式中使用模板文字?

时间:2019-05-15 19:20:33

标签: javascript node.js testcase

我正在编写一个单击某些过滤器的测试,并且发现浏览器之间存在一些差异。例如,在主要的浏览器(Chrome,Firefox,Safari)上,完全按照以下格式显示了复选框:Checkers,Cheese,Salsa,Butter。当我在IE11上运行测试时,这些字符串是小写字母,并且因为它是小写字母,所以我的测试失败了。为了解决这个问题,我希望使用正则表达式。我用来单击这些复选框的功能是可重用的。

我很困惑,因为我试图在正则表达式中传递字符串,但是测试失败。然后,我继续创建模板文字,然后有人以这种方式在正则表达式中传递字符串,并且测试仍然失败。我的问题是,有没有更聪明的方法将字符串变量传递给正则表达式?

filterPage看起来像:

     export default class OrderHistory {
      constructor() {
          this.filter = Selector(
                ".filterCheckbox"

}

async selectFilter(text) {
    await t.click(this.filter.withText(`/${text}`/i));

}

测试页如下:

 test(“click the cheese filter”, async t => {
   const cheeseFilter = Cheese;

   await filterPage.selectFilter(cheeseFilter);

});

1 个答案:

答案 0 :(得分:1)

如果需要动态构建正则表达式,

RegExp构造函数可能会执行此操作,因为它也可以接受字符串

new RegExp(text, 'i');