使用固定装置在Emberj和Qunit中进行数据测试



我有一个简单的ember应用程序,我想对其进行测试,而无需为API调用进行服务器。

我环顾四周,发现了这件代码,这很有帮助。问题是用于测试,我想使用固定装置适配器(有意义,对吗?)

 @store = Lfg.__container__.lookup('store:main')

这是我的模型:

Lfg.Activity = DS.Model.extend
  title: DS.attr('string')
  people: DS.attr('number')
  maxPeople: DS.attr('number')
  host: DS.attr('string')

然后在Em.run =>内部我做

  Lfg.reset()
  container = new Ember.Container()
  # These are my models... just one for now.
  [
    'activity'
  ].forEach (x,i) ->
    container.register 'model:'+x, Lfg.get( Ember.String.classify(x) )
  # It's essentially just: container.register("model:activity", Lfg.Activity)

  @store = DS.Store.create
    adapter: DS.FixtureAdapter.extend()
    container: container

但是我一直在串行器中遇到错误。我尝试添加序列化器,但无济于事。我还需要container.register其他事情吗?

我遇到的错误是来自Mockjson方法的TypeError: Cannot call method 'serialize' of undefined,更具体地说store.serializerFor(type)正在返回null。

如果我通过store = Lfg.__container__.lookup('store:main')设置了商店,然后store.serializerFor(Lfg.Activity)在控制台中似乎可以正常工作 - 这不是同一商店吗?我想将其与固定装置适配器一起使用。我尝试设置序列化器,但没有帮助。

我更喜欢使用诸如oibjax之类的东西模拟API端点,然后使用Qunit和Ember和Qunit提供的内置助手

这是如何设置简单的JSON响应

的一个示例
$.mockjax({
    url:  '/colors',
    dataType: 'json',
  responseText: {
    colors:[
      {
        id: 1,
        color: "red"
      },
      {
        id: 2,
        color: "green"
      },
      {
        id: 3,
        color: "blue"
      }
     ]
  }
});

和一个将达到此端点的测试

test("root lists 3 colors", function(){
  var store = App.__container__.lookup('store:main');
  var colors = store.find('color');
  stop();
  colors.then(function(arr){
    start();
    equal(arr.get('length'), 3, 'store returns 3 records');
  });      
});

http://emberjs.jsbin.com/wipo/3/edit

最新更新