2015-03-06 19 views
14

Mam kilka testów jednostkowych, które mają dostęp do sklepu. Pomyślałbym, że to będzie w porządku, o ile zawinę je w oddzwonienie. Niestety tak nie jest. Otrzymuję ten błąd:ember-qunit: Możesz wyładować tylko rekord, który nie jest w FInze

afterEach nie powiodło się na #foo: Asercja nie powiodła się: Możesz zwolnić tylko zapis, który nie znajduje się na InFlight.

Jak rozumiem, to właśnie to powinno zapobiegać run. Mój test wygląda mniej więcej tak:

test('#foo', function(assert) { 
    var store = this.store(); 
    var model = this.subject(); 

    Ember.run(function() { 
    var secondModel = store.createRecord('secondModel', { foo: 'bar' }); 
    model.set('secondModel', secondModel); 
    var foo = model.get('secondModelFoo'); 

    assert.equal(foo, 'bar'); 
    }); 
}); 
+0

Wydaje się, że używasz przestarzałych wersji Ember Data. –

+0

Dlaczego tak mówisz? – nullnullnull

+0

której wersji ember-danych używasz? Ten sam problem występuje podczas testów integracji w wersji beta15 – chrmod

Odpowiedz

3

Wydaje się jakby to nie jest już problemem w v1.13.8 Ember danych w połączeniu z Ember v1.13.7.

dla następujących konfiguracji:

Modele/First-model.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    secondModel: DS.belongsTo('second-model') 
}); 

Modele/sekundę-model.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    foo: DS.attr('string') 
}); 

tests/jednostka/Modele/first-model- test.js

import Ember from 'ember'; 
import { moduleForModel, test } from 'ember-qunit'; 

moduleForModel('first-model', 'Unit | Model | first model', { 
    // Specify the other units that are required for this test. 
    needs: ['model:second-model'] 
}); 

test('it exists', function(assert) { 
    var model = this.subject(); 
    // var store = this.store(); 
    assert.ok(!!model); 
}); 

test('#foo', function(assert) { 
    var store = this.store(); 
    var model = this.subject(); 

    Ember.run(function() { 
    assert.expect(1); 

    var secondModel = store.createRecord('second-model', { foo: 'bar' }); 
    model.set('secondModel', secondModel); 
    var foo = model.get('secondModel.foo'); 

    assert.equal(foo, 'bar'); 
    }); 
}); 

Przełęcz testowa. Demo project repository on GitHub.