我正在尝试为我的ember.js
rails
应用程序设置一个测试环境,并决定Konacha
使用mocha
and chai
。我目前最大的问题是在测试环境中设置fixtures
我的。ember models
如果你实现了这个,你们中的任何人都可以解释你的文件结构和设置吗?有一些网站可以非常简要地解释它,但我更喜欢更清晰的解释。
问问题
413 次
1 回答
1
首先,一些笔记可以帮助您澄清这一点并获得您正在寻找的答案。
- Rails 固定装置和 Ember.js 固定装置根本不相关,Rails 与它几乎没有关系。
- Ember.js 固定装置可以在您的测试套件需要的任何文件中声明。
- Ember.js 固定装置是永久性的,不能被拆除。这意味着它们会在您的测试之间保持状态。
ember-data
如果您不明确销毁它们,将在测试之间保留记录。
话虽如此,这是我的一个项目中的一个以前的test_helper.coffee
文件。该文件将配置 Ember 以进行测试和预加载您的设备。该项目正在使用mocha
和chai
测试——不需要其他库。希望 CoffeeScript 不会引起问题:
#= require_tree .
Efflux.setupForTesting()
Efflux.injectTestHelpers()
Ember.Test.adapter = Ember.Test.Adapter.extend
exception: (error) ->
Ember.inspect(error)
throw error
Efflux.Store = DS.Store.extend
adapter: DS.FixtureAdapter.create(simulateRemoteResponse: false)
revision: 13
Efflux.Tag.FIXTURES = [
{ id: 1
name: 'alpha'
group: 'symbols'
},
{ id: 2
name: 'beta'
group: 'symbols'
},
{ id: 3
name: 'gamma'
group: 'symbols'
}
]
这是一个以 BDD 样式编写并使用 Tag.FIXTURES 的示例测试:
describe '#alphaSort', ->
it 'combines the group and name into a single property', ->
Ember.run ->
tag = Efflux.Tag.find(3)
tag.one 'didLoad', ->
tag.set('group', 'greek')
tag.set('name', 'alpha')
expect(tag.get('alphaSort')).to.eq('greekalpha')
需要注意的重要事项是 Ember.run 被用于整个测试,并且在didLoad
触发事件之前数据不可用。自编写以来,某些数据挂钩可能已更改,但这是大体思路。
于 2013-12-31T20:38:31.363 回答