我在注册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'
});
});
有人能解释我为什么好吗?
答案 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);
方法,因为它会返回一个布尔值。