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
中的 waitFor
或 waitUntil
来确保身份验证已完成。
我正在努力调试 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
中的 waitFor
或 waitUntil
来确保身份验证已完成。