2013-04-22 5 views
9

La nostra app utilizza i dati ember con FixtureAdapter. Stiamo testando il codice del modello (vari calcoli JS) usando Jasmine e js-test-driver. Ogni blocco crea il proprio set di record in un blocco beforeEach.Reimposta i modelli/i modelli di fixtureAdapter per ember-data nei test

Questo funziona perfettamente con ember-1.0.0-rc.1 e ember-data creati localmente su 2013-03-05 (rev 7575f5a). Attualmente sto tentando di eseguire l'aggiornamento a 1.0.0-rc.3 e gli ultimi dati di consegna, ma sto sbagliando un roadblock con ID univoci. Sto ottenendo il seguente errore durante l'esecuzione di tutti i test:

Error: assertion failed: The id 1001 has already been used with another record of type .Foo. in http://localhost:56390/js/lib/ember-1.0.0-rc.3.js (line 52) 

Sembra una versione più recente di brace-dati on afferma ID univoci. Sfortunatamente, i nostri test richiedono ID hardcoded per i record ricreati nel blocco beforeEach di ciascun test. Ogni test sta creando Foo con id 1001.

C'è un modo semplice per ripristinare tutto il negozio con un FixtureAdapter i suoi dati (e di conseguenza dimenticare Foo 1001)? Ho provato a reimpostare gli apparecchi con:

App.Foo.FIXTURES = [] 

Tuttavia, i dati di ember sembrano ancora tenere traccia dei vecchi record da qualche parte. Ho anche provato App.reset(), ma non sembra resettare il negozio.

facciamo anche

App.Store = DS.Store.extend({ 
    revision: 12, 
    adapter: 'DS.FixtureAdapter' 
}); 

nel blocco beforeeach con il presupposto che questo sarebbe cancellare tutti i dati con la creazione di un nuovo negozio, ma che non funziona neanche.

+0

È questo risposto? Potresti scegliere una risposta o rispondere da solo? Mi piacerebbe rimuovere questo problema da "senza risposta" –

risposta

0

Inizialmente mi sono imbattuto nello stesso identico problema, cercando di generare record prima dei singoli test. È utile pensare a fixtures in the Rails sense, dove rappresentano una serie di record che verranno costruiti una volta prima dell'esecuzione di tutti i test.

Questo è contrario allo stile di produzione di record individuali prima di ogni test, che è il modello che sembra seguire.

È più una soluzione che una soluzione, ma consiglio di posizionare tutti i dispositivi in ​​uno o più file e quindi caricarli prima di tutti i test. Dovresti quindi fare riferimento allo stesso record da test separati senza ricostruirli.

Il più grande avvertimento per l'approccio del dispositivo è che non c'è alcun "rolback" fornito dopo ogni test. Di conseguenza, è necessario essere cauti nei confronti dei record mutanti se si fa affidamento sui valori originali nei test.

+0

La mutazione era il problema e il motivo per cui volevamo ricrearli prima di ogni test. Grazie per le informazioni sui dispositivi di tipo Rails però. –

0

Assicurati di eseguire Ember.reset() tra un test (mettendolo nel blocco beforeAll gelsomino)

Problemi correlati