4

我正在针对 Ember.js 应用程序编写单元和集成测试,但在测试应用程序时我无法连接到服务器。这意味着我需要使用 DS.FixtureAdapter 来备份我的数据存储。

但我个人并不喜欢大型应用程序中的固定装置,因为很难想出一套适用于每个测试用例的固定装置。我更喜欢 factory_girl 和 machinist 之类的工具,它们允许我生成与所有其他测试隔离的特定于测试的数据:

FactoryGirl.define do
  factory :user do
    name 'John Doe'
    date_of_birth { 21.years.ago }
  end
end

# In specific test cases:
user = FactoryGirl.build(:user)
young_user = FactoryGirl.create(:user, date_of_birth: 17.years.ago)

当然 factory_girl 和 machineist 也可以自动生成相关模型。

现在有什么简单的方法可以在 Ember.js 中做到这一点吗?是否有可能使这更容易的技术、约定或库?谷歌搜索还没有真正的任何选择。

4

3 回答 3

5

我最近创建了一个名为 Ember Data Factory Guy 的项目,以帮助为使用 ember-data 的 ember 项目创建夹具数据。它与 REST 或 ActiveModel 适配器一起使用,并具有测试助手,使其非常容易使用。

在这里查看:

https://github.com/danielspaniel/ember-data-factory-guy

它支持belongsTo、hasMany(甚至多态)关联.. 序列、嵌入belongsTo .. 和其他一些东西。

于 2014-06-03T12:44:47.637 回答
2

我过去曾使用 rake 任务用 FactoryGirl 创建一堆对象,然后通过序列化程序将其转储到fixtures.json文件中。

优点:

  • 当您有复杂的序列化逻辑或计算属性时,它会使事情保持干燥。
  • 您对测试更有信心。

缺点:

  • 这有点骇人听闻。
  • 可用性一般,因为您必须记住重新生成设备文件(缓慢、乏味)。
  • 很难为不同的测试用例生成不同的fixture 集,因此您通常会被一组全局fixture 所困。

我目前没有代码,但这不是一个非常复杂的设置。对于利大于弊,我持观望态度。

顺便说一句,我发现为 Konacha 动态生成固定装置太慢而无法使用(参见#60)。

于 2013-04-14T16:54:09.183 回答
1

我认为您可以在客户端和模拟请求中生成数据。我建议您可以将 jasmine 或 mocha 与factory_girl js一起使用。

用于生成数据

FactoryGirl.define('user', function() {
      this.id = 1
})
FactoryGirl.create('user')

更多细节在这里:https ://github.com/Coffa/factory_girl

余烬

你可以在这里查看使用 Ember 测试助手的设置是什么?

于 2013-09-25T12:39:16.430 回答