authentication - 在继续 AngularJS 测试之前, Protractor 不等待登录重定向,有什么建议吗?

标签 authentication wait angular-ui-router protractor

我有一个标准的用户名/密码/提交按钮表单,当用户单击该按钮时,表单会使用 ng-submit="login.submit()" 提交,该表单会进行登录并打开成功使用 ui.router 重定向到主页 ($state.go("main"))。

以下测试失败:

  describe("login", function() {
    beforeEach(function() {
      var email = element(by.model("login.email"));
      email.clear().sendKeys("mail");

      var password =  element(by.model("login.password"));
      password.clear().sendKeys("pass");

      var submit = element(by.id("submit"));
      submit.click();
    });

    it("should be able to login", function() {
      expect(element(by.css(".loginPage")).isPresent()).toBe(false);
      expect(element(by.css(".mainPage")).isPresent()).toBe(true);
    });
  });

如果我尝试增加等待时间,我可以看到浏览器始终停留在登录页面上(单击按钮后) - 然后我就会超时。

成功登录后,浏览器会收到一个带有 token 的 cookie,用于验证每个后续请求。

编辑:经过一些修补,我发现了它失败的地方..

function login(email, pass) {
  alert("it gets here");
  return _auth.post({ username: email, password: pass }).then(function(data) {
    alert("does not get here");
    console.log("loginok, token:" +$browser.cookies().apiToken); //this should be the received token
    return data;
  });
}

EDIT2:身份验证服务

var _auth = Restangular.withConfig(function(Configurer) {
  Configurer.setBaseUrl("/");
}).service("auth/simple");

return {
  login: login,
};

function login(email, pass) {
  return _auth.post({ username: email, password: pass });
}

手动一切都会按预期进行。

最佳答案

@JoMendez 的答案非常接近,但不适用于我的情况。用过@DaveGray的here .

必须将 isPresent() 调用包装在函数中。

browser.wait(function() {
  return element(by.css('.mainPage')).isPresent();
});

关于authentication - 在继续 AngularJS 测试之前, Protractor 不等待登录重定向,有什么建议吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26931937/

相关文章:

android等待线程的 Activity

javascript - 用户界面路由器 : Best way to initialize variables when state is accesed

javascript - Controller 不应在 $location.path() 上重新加载

c++ - 有没有办法测试 pclose() 是否会成功?

java - Swing - 启动浏览器并在用户关闭时收听

angularjs - 多方向angularjs View 动画

authentication - 在带有 ASP.NET Core Swashbuckle 的 Swagger UI 上使用 [Authorize] 属性

php - PHP 中的 session 和登录混淆

php - 使用 AJAX 发送纯文本密码有多安全?

python - 使用带有 PKCS#12 证书的 httlib 的 HTTPSConnection 时出错