【问题标题】:Ember QUnit moduleFor (testing) adapter retrieving StoreEmber QUnit 模块用于(测试)适配器检索存储
【发布时间】:2014-12-31 02:29:52
【问题描述】:

我正在为我的自定义 DS.RESTAdapter 编写测试,它使用我们自己的 SDK 作为传输器而不是 ajax 调用。现在,我想测试适配器 find、findAll、findQuery ... 需要我将 store 实例作为参数传递的函数。 例如:

findAll: function(store, type, sinceToken){...}

为了能够对此进行测试,我需要传递在 ember-qunit 的 moduleFor 中不可用的“store”参数(与 moduleForModel 不同,您可以在测试实例中通过 this.store 访问 store)。

还有其他方法可以访问当前的 store 实例吗?

谢谢。

编辑:

我通过为 store 和 type 创建模拟来解决这个问题。 您可以通过以下方式创建商店实例:

var store = DS.Store.create({
    adapter: @subject
})

还有一个用于类型的模拟,就像一个具有测试所需属性的普通对象。

【问题讨论】:

  • 我不确定您是否可以直接使用moduleFor,但仅使用module 您应该可以从应用实例访问它。您可以使用App.__container__.lookup('store:main') 来取回 ember-data 存储的实例。
  • 是的,但这需要我创建一个新的 App 实例,而我想避免这种情况。我通过为存储和类型创建模拟来解决。不过感谢您的评论。
  • 你的代码有可能在某处在线吗?希望实现同样的目标,并且可以节省大量挖掘工作。非常感谢。

标签: testing ember.js ember-cli ember-qunit


【解决方案1】:

您可以模拟此方法(例如,使用Sinon plugin for QUnit)。另一种访问商店的解决方案(但我不确定它是否适用于您的情况)帮助我从全局命名空间访问商店是使用 setup 和 teardown 方法:

  setup: function () {
    Ember.run(App, App.advanceReadiness);
  },
  teardown: function () {
    App.reset();
  }

【讨论】:

  • 实际上我最终为“商店”和“类型”创建了模拟。不过感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 2017-02-27
  • 2014-10-22
  • 2015-04-24
  • 2017-05-28
  • 2014-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多