2014-02-07 41 views
3

我有一個簡單的應用程序,我想測試它,而不需要爲API調用服務器。使用燈具在EmberJS和QUnit中進行數據測試

我已經看了一大堆,發現這段代碼非常有幫助。問題是測試我想用燈具適配器(是有道理的,對嗎?)

@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)它似乎在控制檯中工作正常 - 這是不是同一家商店?我想用夾具適配器來使用它。我試着設置串行器,但沒有幫助。

回答

1

我更喜歡使用類似mockjax嘲笑API端點,然後使用qunit和內置的由灰燼提供助手和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'); 
    });  
}); 

+0

是否有可能用燈具數據測試EmberJS? – northben

+0

Emberjs或餘燼數據,他們是兩個不同的產品 – Kingpin2k

+0

我使用兩個,並試圖與qunit測試。看來我們遇到了和OP一樣的問題。 EmberJS文檔不太清楚如何做到這一點。 – northben