Ember.js/Rails интеграционное тестирование со светильниками

Я пытаюсь настроить среду тестирования для своего ember.jsrails приложение, и решили использовать Konacha с mocha а также chai, Самая большая проблема, с которой я столкнулся на данный момент, - это настройка fixtures для меня ember models в тестовой среде. Сможет ли кто-нибудь из вас объяснить структуру и настройки файлов, если вы это реализовали? Есть несколько сайтов, которые объясняют это очень кратко, но я бы предпочел более четкое объяснение.

1 ответ

Во-первых, несколько заметок, которые могут помочь вам прояснить это и получить ответ, который вы ищете.

  1. Приспособления Rails и Ember.js вообще не связаны, Rails имеет к этому мало отношения.
  2. Светильники Ember.js могут быть объявлены в любом файле, который требуется вашему тестовому набору.
  3. Светильники Ember.js являются постоянными и не могут быть снесены. Это означает, что они сохраняют состояние между вашими тестами.
  4. 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 событие сработало. Некоторые из хуков данных, возможно, изменились с момента написания, но это общая идея.

Другие вопросы по тегам