Javascript 期望使用量角器和jasmine测试url#片段
我正在尝试使用量角器(与jasmine一起)对我的web应用程序进行一些功能测试,我遇到的一个问题是: 如何检查我的url中的当前哈希(#片段)是什么? 例如,使用,Javascript 期望使用量角器和jasmine测试url#片段,javascript,angularjs,jasmine,protractor,Javascript,Angularjs,Jasmine,Protractor,我正在尝试使用量角器(与jasmine一起)对我的web应用程序进行一些功能测试,我遇到的一个问题是: 如何检查我的url中的当前哈希(#片段)是什么? 例如,使用,browser.get('/')它应该导航到http://localhost:8000/#/url。。。其中#/是未启用html5模式时angular使用的url#片段(散列) browser.getCurrentUrl()将返回绝对url,因为http://,而不仅仅是我要测试的片段 有没有办法以正确的方式测试这个案例 我希望这样
browser.get('/')
它应该导航到http://localhost:8000/#/
url。。。其中#/
是未启用html5模式时angular使用的url#片段(散列)
browser.getCurrentUrl()
将返回绝对url,因为http://
,而不仅仅是我要测试的片段
有没有办法以正确的方式测试这个案例
我希望这样做:
browser.get('/');
expect(browser.getCurrentUrlFragment()).toBe('#/');
get('/user/');
expect(browser.getCurrentUrlFragment()).toBe(“#/user”);
可能吗
谢谢。只需使用内置对象-
document.location.hash
。它将只返回散列,如果url不包含它,则返回空字符串
查找
位置
对象-它包含一些其他检索url部分的方法。在这种情况下,可以使用多个匹配器,例如toMatch()
,末尾有一个$
:
expect(browser.getCurrentUrl()).toMatch(/#\/user$/);
或者,toEndWith()
matcher来自第三方:
expect(browser.getCurrentUrl()).toEndWith("#/user");
也可以使用内置的toContain()
,但这不会强制在字符串末尾使用预期的子字符串:
expect(browser.getCurrentUrl()).toContain("#/user");
不幸的是,这与OP的要求并不接近。这是量角器和茉莉花专用。@alecxe是正确的,当需要进行简单检查时,此方法将起作用。但是,当您必须处理承诺(如页面更改/页面加载)时,使用angularjs无法工作。。。纯js是如此可爱和方便,我不知道为什么框架如此流行。