2013-05-09 64 views
3

我是在DS.Model上測試計算屬性的單元。如何使用hasMany關聯手動加載記錄以進行單元測試?

// a trivial example that i'm not actually testing 
App.ModelA = DS.Model.extend({ 
    sub_models : DS.hasMany('App.ModelB'), 

    lengthOfBees : function() { 
     return this.sub_models.length; 
    }.property('sub_models.length') 
}) 

我該如何手動創建一個有關聯的記錄?提供json的記錄沒有關聯很容易.. App.ModelX = App.ModelX.createRecord({attribA:'valueA'});

但我不知道當我想提供hasMany關聯時createRecord的語法。我怎麼做?

回答

3

假設你正在使用的餘燼數據啓12這應該工作

test("findMany QUnit test example", function() { 
    store.load(Person, {id: 9, name: "Toran Billups"}); 
    person = store.find(Person, 9); 
    store.loadHasMany(person, 'tasks', [ 1, 2 ]); 

    var tasks = get(person, 'tasks'); //to fire the http request 

    equal(get(tasks, 'length'), 2, ""); 
    }); 

如果loadHasMany不會在你燼數據的版本中運行這個代替

test("findMany QUnit test example", function() { 
    store.load(Person, {id: 9, name: "Toran Billups", tasks: [1, 2]}); 
    person = store.find(Person, 9); 

    var tasks = get(person, 'tasks'); //to fire the http request 

    equal(get(tasks, 'length'), 2, ""); 
    }); 
+0

感謝您的幫助嘗試至今。這與我正在尋找的內容非常接近,但我寧願不要執行get(person,'tasks')行來激發http請求,然後必須使用sinon來發回任務json數據。是不是有辦法手動加載所有JSON數據到商店的關聯? – inconduit 2013-05-09 15:53:26

+0

如果在加載人員對象之前加載每個任務,該怎麼辦?那麼當你發現它會自動連線(不需要http請求) – 2013-05-09 15:54:41

+0

完美,就是這樣。謝謝。 – inconduit 2013-05-09 16:09:54