Ember.js的测试数据生成(如factory_girl或machinist)

时间:2013-04-04 14:17:16

标签: testing ember.js factory-bot machinist

我正在针对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和machinist也可以自动生成相关模型。

现在有没有简单的方法在Ember.js中执行此操作?是否有技术,惯例或库可以使这更容易?谷歌搜索还没有任何选择。

3 个答案:

答案 0 :(得分:5)

我最近创建了一个名为Ember Data Factory Guy的项目,以帮助为使用ember-data的ember项目创建fixture数据。 它适用于REST或ActiveModel适配器,并且具有测试帮助程序,可以非常轻松地使用它。

在这里查看:

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

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

答案 1 :(得分:2)

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

优点:

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

缺点:

  • 这有点ha ..
  • 可用性是如此,因为你必须记住重新生成灯具文件(缓慢,乏味)。
  • 很难为不同的测试用例生成不同的灯具组,所以你大多数时候都会遇到一套全球灯具。

我目前没有代码,但这不是一个非常复杂的设置。关于优点是否超过缺点,我正处于障碍之中。

顺便说一句,为Konacha动态生成灯具太慢而无法使用,我找到了(见#60)。

答案 2 :(得分:1)

我认为您可以在客户端和模拟请求中生成数据。我建议你可以使用factory_girl js的茉莉花或摩卡咖啡。

用于生成数据

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

更多详细信息:https://github.com/Coffa/factory_girl

emberjs

你可以在这里查看what's the setup to use Ember testing helpers?