我正在针对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中执行此操作?是否有技术,惯例或库可以使这更容易?谷歌搜索还没有任何选择。
答案 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
文件中。
优点:
缺点:
我目前没有代码,但这不是一个非常复杂的设置。关于优点是否超过缺点,我正处于障碍之中。
顺便说一句,为Konacha动态生成灯具太慢而无法使用,我找到了(见#60)。
答案 2 :(得分:1)
我认为您可以在客户端和模拟请求中生成数据。我建议你可以使用factory_girl js的茉莉花或摩卡咖啡。
FactoryGirl.define('user', function() {
this.id = 1
})
FactoryGirl.create('user')
更多详细信息:https://github.com/Coffa/factory_girl