期望用量角器和茉莉花来测试网址#fragment

时间:2016-03-13 17:14:54

标签: javascript angularjs jasmine protractor

我尝试使用量角器(使用jasmine)为我的Web应用程序执行一些功能测试,我遇到的一个问题是:

如何查看我的网址中当前哈希值(#fragment)是什么?

例如使用,browser.get('/')它应该导航到http://localhost:8000/#/ url ...其中#/是当html5模式不是时由angular使用的url #fragment(哈希)启用。

browser.getCurrentUrl()将返回自http://以来的绝对网址,而不仅仅是我要测试的网址。

有没有办法以正确的方式测试这个案例?

我希望做到这样的事情:

browser.get('/');
expect(browser.getCurrentUrlFragment()).toBe('#/');

browser.get('/user/');
expect(browser.getCurrentUrlFragment()).toBe('#/user');

可能吗?

谢谢。

2 个答案:

答案 0 :(得分:6)

在这种情况下可以使用多个匹配器,例如toMatch(),最后带有$

expect(browser.getCurrentUrl()).toMatch(/#\/user$/);

或者来自jasmine-matchers第三方的toEndWith()匹配器:

expect(browser.getCurrentUrl()).toEndWith("#/user");

也可以使用内置的toContain(),但这不会强制在字符串末尾预期的子字符串:

expect(browser.getCurrentUrl()).toContain("#/user");

答案 1 :(得分:0)

只需使用内置对象 - document.location.hash。如果url不包含它,它将仅返回散列或空字符串。

查找Location对象 - 它包含一些其他用于检索网址部分的方法。