gpt4 book ai didi

Ember.js 验收测试不等待异步数据操作

转载 作者:行者123 更新时间:2023-12-02 22:00:07 25 4
gpt4 key购买 nike

使用 Emberfire (Firebase) 适配器时,我收到各种错误,表明测试未等待数据操作完成。

例如:错误:断言失败:您只能卸载不在飞行中的记录。当我尝试创建、检查然后删除记录时

另外:

FIREBASE 警告:用户回调引发异常。错误:在 Exports.default._emberTestingAdaptersAdapter.default.extend.asyncStart 处的 Object.extend.stop (http://localhost:4200/assets/test-support.js:3000:10) 的测试上下文之外调用 stop()

手动浏览我的应用程序时或使用标准 ember 数据适配器时都不会发生这些错误。

是什么导致了这些错误以及如何避免它们?

编辑:虽然症状有点不同(没有抛出错误),但听起来像 this problem可能与我所看到的错误具有相同的根本原因。

最佳答案

tl;博士

为了解决这个问题,我一直在使用 custom test waiter.您可以使用 ember install ember-cli-test-model-waiter 安装它(适用于 Ember v2.0+)

更长的答案:

这些问题的根本原因是 ember 测试系统不知道如何处理 Firebase 的异步性。对于大多数适配器,这不是问题,因为测试系统 instruments AJAX callsensures they have completed before proceeding ,但这不适用于 Firebase 的 websockets 通信。

因此,尽管手动交互时不会发生这些错误,但我相信,如果单击速度足够快,从技术上讲它们是可能发生的。

这些问题是known to occur with ember-pouch并且也可能发生在其他非 AJAX 适配器上(例如本地存储适配器( 12 )或任何其他基于 websockets 的适配器。它可能会发生在夹具适配器上,但可能会立即返回结果,所以不会触发此问题)。其他异步进程也会发生这种情况,例如 liquid-fire animations (fixed in a similar way)

custom test waiter I mentioned in the tl;dr其工作原理是在继续测试之前等待所有模型解析,因此应该适用于所有这些非 AJAX 适配器。

有关 ember 测试如何处理后台异步性的更多背景信息,Cory Forsyth has a helpful blog post ,和 this gist提供了另一种更灵活的解决方案,但需要更多的手动记账。

关于Ember.js 验收测试不等待异步数据操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33426242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com