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

Ember simple auth tests failing intermittently

我正在努力调试 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 其中 returns 相同的响应,此测试大约有一半的时间失败。它会通过还是失败似乎是随机的。

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

谢谢

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

如果这不起作用,那么您可以尝试使用 ember-test-helpers 中的 waitForwaitUntil 来确保身份验证已完成。