测试时的余烬错误:您将需要在运行中包装任何带有异步副作用的代码

Ember Error while testing: You will need to wrap any code with asynchronous side-effects in a run

本文关键字:包装 任何带 运行 异步 代码 副作用 错误 余烬 测试      更新时间:2023-09-26

我们已经有一个应用程序正在工作,只是为了CI的目的添加测试用例。

我们有一个小代码,尝试登录过程,并检查可能的登录状态后发生的事情,如成功,失败,无效帐户帐户锁定等。

所以我试了下面的代码。

visit('/login')
    .fillIn('#identification', "testuser")
    .fillIn('#password', "testpass")
    .click('input[type="submit"]')
    andThen(function(){
        ok(!exists('button:contains(sign in)'), '3. Login button is not displayed when authenticated');
        ok(exists('.dropDownMenuOptions li:contains(Logout)'), '4. Logout button is displayed when authenticated');
    });

,它在控制台中给出以下错误:

ember.debug.js:5162 Uncaught Error: Assertion Failed: You have turned on testing mode, which disabled the run-loop's autorun. You will need to wrap any code with asynchronous side-effects in a run

单击后出现此错误。当点击向服务器发出AJAX调用时,在其响应中进行路由转换。

对于成功登录的情况,我想检查我的路由是否从/login更改为/,因为这个错误我无法做到。

请建议。

谢谢

在处理表单提交的控制器/组件中,您必须执行set(示例)

save: function() {
    this.get('model').set('name', 'foo');
}

如果这个工作是在一些ajax事件之后的运行循环(async)中完成的,一定要像这样在/ember run中包装它

save: function() {
    Ember.run(function() {
        this.get('model').set('name', 'foo');
    });
}
相关文章: