Ember.js/Rails интеграционное тестирование со светильниками
Я пытаюсь настроить среду тестирования для своего ember.js
rails
приложение, и решили использовать Konacha
с mocha
а также chai
, Самая большая проблема, с которой я столкнулся на данный момент, - это настройка fixtures
для меня ember models
в тестовой среде. Сможет ли кто-нибудь из вас объяснить структуру и настройки файлов, если вы это реализовали? Есть несколько сайтов, которые объясняют это очень кратко, но я бы предпочел более четкое объяснение.
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
событие сработало. Некоторые из хуков данных, возможно, изменились с момента написания, но это общая идея.