使用regex.test()而不是Jasmine期望测试重定向

时间:2014-11-07 02:07:08

标签: angularjs protractor

我在注册AngularJs应用程序后测试重定向。 点击注册按钮后,我调用一个函数来检查网址是否与targetRegex匹配。 第一个代码块使用Jasmine expect,但我收到错误:timeout: timed out after 30000 msec waiting for spec to complete

   return browser.wait(function() {
     return browser.driver.getCurrentUrl().then(function(url) {
       return expect(url).toContain(targetRegex);
     });
   });

同时以下代码似乎运作良好:

  return browser.wait(function() {
    return browser.driver.getCurrentUrl().then(function(url) {
      return targetRegex.test(url); // look for a match of the regex /profile/ in the 'url'
    });
  });

有人能解释我为什么好吗?

1 个答案:

答案 0 :(得分:0)

来自Jasmine docs' toContain' matcher用于查找数组中的项目。

要通过正则表达式进行匹配,我认为您要使用toMatch,而不是expect(url).toMatch(targetRegex);

但是,我不确定您是否要在toMatch之后使用return方法。它不会返回一个简单的布尔结果。如果您查看source code for that method,您会看到它返回一个带有compare方法的对象。从 matchers 子目录中的其他方法的源代码来看,显然这是Jasmine库内部使用的标准模式。

所以,最重要的是,你最好坚持使用return targetRegex.test(url);方法,因为它会返回一个布尔值。