我尝试使用量角器(使用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');
可能吗?
谢谢。答案 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
对象 - 它包含一些其他用于检索网址部分的方法。