【问题标题】:Ember.js/Rails integration testing with fixturesEmber.js/Rails 与夹具的集成测试
【发布时间】:2013-10-22 14:39:24
【问题描述】:

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

【问题讨论】:

  • 您是在询问完整的文件结构,还是只是灯具?
  • 这似乎很好地解释了夹具 - emberjs.com/guides/getting-started/using-fixtures
  • 正如凯利有用地指出的那样,使用固定装置并不多。它们只是硬编码的数据。我们确实需要更多关于您究竟对什么感到困惑或试图对您的设置做什么的信息。

标签: javascript ruby-on-rails ember.js chai konacha


【解决方案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 事件之前数据不可用。自编写以来,某些数据挂钩可能已更改,但这是大体思路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多