Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何测试登录后可访问的角度视图?_Angularjs_Selenium_Protractor - Fatal编程技术网

Angularjs 如何测试登录后可访问的角度视图?

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

我正在使用量角器测试我的angular应用程序,其中大多数视图仅可供经过身份验证的用户访问

目前,我将登录操作放置在每个之前的

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,则可以使用软件包。