6

我正在尝试为我的ember.js rails应用程序设置一个测试环境,并决定Konacha使用mochaand chai。我目前最大的问题是在测试环境中设置fixtures我的。ember models如果你实现了这个,你们中的任何人都可以解释你的文件结构和设置吗?有一些网站可以非常简要地解释它,但我更喜欢更清晰的解释。

4

1 回答 1

1

首先,一些笔记可以帮助您澄清这一点并获得您正在寻找的答案。

  1. Rails 固定装置和 Ember.js 固定装置根本不相关,Rails 与它几乎没有关系。
  2. Ember.js 固定装置可以在您的测试套件需要的任何文件中声明。
  3. Ember.js 固定装置是永久性的,不能被拆除。这意味着它们会在您的测试之间保持状态。
  4. ember-data如果您不明确销毁它们,将在测试之间保留记录。

话虽如此,这是我的一个项目中的一个以前的test_helper.coffee文件。该文件将配置 Ember 以进行测试和预加载您的设备。该项目正在使用mochachai测试——不需要其他库。希望 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 回答