首页 > 解决方案 > 更新 ember 和依赖项后,Ember 附加随机测试失败并显示“无法调用 `.lookup` 后所有者已被销毁”

问题描述

我更新了我的附加组件的依赖项和 ember 版本以使用 octane(遵循 ember 指南)。该附加组件像以前一样正常工作,但不是测试。单个随机测试(并不总是相同的测试)失败,如果我自己重新运行单个测试,它就会通过。随机测试失败错误总是一样的:

Can not call `.lookup` after the owner has been destroyed.

我也尝试过运行与测试相关的代码模块,但是除了前面提到的随机测试错误之外,这导致了更多错误,所以我恢复了代码模块。(我计划更新测试以使用最新的样式,但如果可能的话,我宁愿单独进行)。

我非常感谢有关此错误发生原因或如何摆脱它的任何信息。

如果有帮助,我最初将这些作为我的依赖项的一部分(更新之前):

"ember-cli": "~3.0.4",
"ember-source": "~3.0.0",
"ember-cli-pretender": "1.0.1",
"ember-cli-qunit": "^4.3.2",
"ember-native-dom-helpers": "^0.6.2",
"ember-qunit-assert-helpers": "0.2.1",
"ember-qunit-nice-errors": "^1.2.0",
"ember-qunit-source-map": "^1.2.0",
"ember-sinon": "^2.1.0",
"ember-sinon-qunit": "^3.1.0",
"ember-test-selectors": "^0.3.9”,

我现在将这些作为我的依赖项的一部分(在我更新之后):

"ember-cli": "~3.23.0",
"ember-source": "~3.23.1",
"ember-cli-pretender": "4.0.0",
"ember-native-dom-helpers": "^0.6.3",
"ember-qunit": "^4.6.0",
"ember-qunit-assert-helpers": "0.2.2",
"ember-qunit-nice-errors": "^1.2.0",
"ember-qunit-source-map": "^1.2.0",
"ember-sinon": "^5.0.0",
"ember-sinon-qunit": "^5.0.0",
"ember-test-selectors": "^5.0.0",
"qunit-dom": "^1.6.0”,

标签: ember.js

解决方案


就我而言,我在“afterModel”中使用了 setTimeout,路由的“this”被破坏(因此 .lookup 服务失败)

setTimeout(() => {
    this.splashScreen.hide();
}, 500);

为了解决这个问题,我将“this”移出了 setTimeout

const splashScreen = this.splashScreen;
setTimeout(() => {
    splashScreen.hide();
}, 500);

推荐阅读