Ember简单验证测试间歇性失败

时间:2018-06-01 19:44:29

标签: ember.js ember-simple-auth

我正在努力调试Ember 3.0应用程序上的失败测试。我有一个使用ember-simple-auth的登录表单。身份验证操作如下所示:

let { identification, password } = this.getProperties('identification', 'password');
this.get('session').authenticate('authenticator:devise', identification, password)
.catch((reason) => {
    this.set('loginError', reason.errors || reason);
});

我的测试只需填写表单并单击按钮即可触发此操作,然后检查用户是否已登录:

invalidateSession();
await visit('/');

fillIn('#identification', 'test@email.com');
fillIn('#password', 'secret');
await click('.login-btn');

let sesh = currentSession();
let isAuthed = get(sesh, 'isAuthenticated');
assert.equal(
  isAuthed,
  true,
  'after a user submits good creds to login form, they are logged in'
);

使用Mirage后端,每次都有效。但是,使用返回相同响应的Rails API,此测试将失败大约一半的时间。它是通过还是失败似乎是随机的。

我不确定问题出在哪里。 Rails应用程序在端口3000上本地运行,因此它不是网络问题。我想知道测试是否超时,因为API需要比Mirage更长的响应时间 - 虽然这似乎不太可能,因为测试在不到一秒的时间内运行。有人遇到过这样的问题吗?

由于

1 个答案:

答案 0 :(得分:2)

我的预感是,在isAuth完成对后端的身份验证之前,您可能正在评估ember-simple-auth。对于与您类似的测试,我在await settled();之后await click();

如果没有做到这一点,那么您可以尝试使用waitFor中的waitUntilember-test-helpers来确保身份验证已完成。