2015-03-06 7 views
14

Ho alcuni test unitari che accedono al negozio. Avrei pensato che sarebbe andato bene, a patto che li avessi impacchettati in un callback di esecuzione. Sfortunatamente, non è così. Viene visualizzato questo errore:ember-qunit: puoi solo scaricare un record che non è inFlight

afterEach non riuscito su #foo: Asserzione non riuscita: è possibile scaricare solo un record che non è inFlight.

Come ho capito, questo è esattamente ciò che run dovrebbe impedire. La mia prova simile a questa:

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

Sembra che stiate usando versioni obsolete di Dati di bordo. –

+0

Perché dici così? – nullnullnull

+0

quale versione di ember-data usi? Sto riscontrando lo stesso problema durante i test di integrazione in beta15 – chrmod

risposta

3

Sembra che questo non è più un problema in v1.13.8 Ember dati in combinazione con Ember v1.13.7.

Per seguente configurazione:

modelli/first-model.js

import DS from 'ember-data'; 

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

modelli/Seconda model.js

import DS from 'ember-data'; 

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

test/unità/modelli/first-modello- 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'); 
    }); 
}); 

Test superato. Demo project repository on GitHub.

Problemi correlati