Javascript 期望使用量角器和jasmine测试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://,而不仅仅是我要测试的片段 有没有办法以正确的方式测试这个案例 我希望这样

我正在尝试使用量角器(与jasmine一起)对我的web应用程序进行一些功能测试,我遇到的一个问题是:

如何检查我的url中的当前哈希(#片段)是什么?

例如,使用,
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是如此可爱和方便,我不知道为什么框架如此流行。