【问题标题】:Ember simple auth tests failing intermittentlyEmber 简单身份验证测试间歇性失败
【发布时间】:2018-11-11 23:47:41
【问题描述】:

我正在努力调试 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 长——尽管这似乎不太可能,因为测试在一秒钟内运行。有没有人遇到过这样的问题?

谢谢

【问题讨论】:

    标签: ember.js ember-simple-auth


    【解决方案1】:

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

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

    【讨论】:

    • 很高兴为您提供帮助。 :-)
    猜你喜欢
    • 2020-08-28
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2022-12-18
    • 2022-01-04
    • 2011-09-29
    • 1970-01-01
    • 2022-10-20
    相关资源
    最近更新 更多