我有一个简单的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