Angularjs 如何测试登录后可访问的角度视图?
我正在使用量角器测试我的angular应用程序,其中大多数视图仅可供经过身份验证的用户访问 目前,我将登录操作放置在每个之前的Angularjs 如何测试登录后可访问的角度视图?,angularjs,selenium,protractor,Angularjs,Selenium,Protractor,我正在使用量角器测试我的angular应用程序,其中大多数视图仅可供经过身份验证的用户访问 目前,我将登录操作放置在每个之前的: beforeEach(function() { browser.get(site + '/account/login'); element(by.id('Username')).sendKeys('testuser'); element(by.id('Password')).sendKeys('letmein'); element(by
:
beforeEach(function() {
browser.get(site + '/account/login');
element(by.id('Username')).sendKeys('testuser');
element(by.id('Password')).sendKeys('letmein');
element(by.css('[value="Log In"]')).click();
});
问题是,对于每一个it('should…')
test,webdriver都会访问登录页面,并反复执行相同的登录仪式
我想一定有更好的办法。如何正确设置,使webdriver只登录一次,然后执行所有it('should…')
测试?这可以通过量角器配置文件的onPrepare
字段完成
量角器本身提供了一个量角器
onPrepare: function() {
browser.driver.get(env.baseUrl + '/login.html');
browser.driver.findElement(by.id('username')).sendKeys('Jane');
browser.driver.findElement(by.id('password')).sendKeys('1234');
...
}
或者,您可以利用Jasmine测试是有序的这一事实。因此,不必在每次测试之前登录,您可以让您的第一次it
登录
我通常将我的Jasmine测试组织到更大的套件中,第一个it
登录,最后一个it
注销
明显的缺点是,您的测试不是完全独立的,但作为回报,测试的执行速度要快得多。您甚至可以争辩说,登录后做多项事情比每次操作都登录和注销更现实
另一个解决方案是使用Jasmine 2.x的前后符号(参见)。这确实要求您使用最新版本的量角器,因为1.5版本之前的量角器仅适用于Jasmine 1.x。我发现在onPrepare
config部分无法测试多个用户角色。So+1表示“可选”。仅供参考,如果是Jasmine 1.x,则可以使用软件包。