gpt4 book ai didi

ember.js - 在测试中重置 ember-data FixtureAdapter 存储/模型

转载 作者:行者123 更新时间:2023-12-02 16:12:47 24 4
gpt4 key购买 nike

我们的应用程序使用 ember-data 和 FixtureAdapter。我们正在使用 Jasmine 和 js-test-driver 测试模型代码(各种 JS 计算)。每个 it block 都会在 beforeEach block 中创建自己的记录集。

这适用于 2013 年 3 月 05 日本地构建的 ember-1.0.0-rc.1 和 ember-data(修订版 7575f5a)。我目前正在尝试升级到 1.0.0-rc.3 和最新的 ember-data,但遇到了唯一 id 的障碍。运行所有测试时出现以下错误:

Error: assertion failed: The id 1001 has already been used with another record of type .Foo. in http://localhost:56390/js/lib/ember-1.0.0-rc.3.js (line 52)

它看起来像是新版本的 ember-data 对唯一 ID 的断言。不幸的是,我们的测试需要硬编码 id 来记录每个测试的 beforeEach block 中重新创建的记录。因此每个测试都会创建一个 id 为 1001 的 Foo。

有没有一种简单的方法可以让带有 FixtureAdapter 的商店重置其所有数据(从而忘记 Foo 1001)?我尝试使用以下方法重置灯具:

App.Foo.FIXTURES = []

但是,ember-data 似乎仍然在某处跟踪旧记录。我也尝试过 App.reset(),但它似乎没有重置商店。

我们也这样做

App.Store = DS.Store.extend({
revision: 12,
adapter: 'DS.FixtureAdapter'
});

在 beforeEach block 中,假设将通过创建新存储来清除所有数据,但这也不起作用。

最佳答案

我最初遇到了完全相同的问题,尝试在单独测试之前生成记录。想到fixtures in the Rails sense会很有帮助。 ,其中它们表示一组记录,将在运行所有测试之前构建一次。

这与在每次测试之前构建单独记录的工厂风格相反,这正是您似乎遵循的模式。

这更像是一种解决方案,而不是解决方案,但我建议将所有装置放入一个或多个文件中,然后在所有测试之前加载这些文件。然后,您可以从单独的测试中引用相同的记录,而无需重建它们。

夹具方法的最大警告是每次测试后不提供任何“回滚”。因此,如果您在测试中依赖原始值,则需要警惕记录的变化。

关于ember.js - 在测试中重置 ember-data FixtureAdapter 存储/模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16149896/

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