2013-04-22 5 views
9

Nasza aplikacja używa danych ember z FixtureAdapter. Testujemy kod modelu (różne obliczenia JS) używając Jasmine i js-test-driver. Każdy blok tworzy własny zestaw rekordów w bloku beforeEach.Resetuj dane ember FixtureAdapter sklepów/modele w testach

Działa to dobrze z danymi ember-1.0.0-rc.1 i ember zbudowanymi lokalnie 2013-03-05 (rev 7575f5a). Obecnie próbuję dokonać aktualizacji do wersji 1.0.0-rc.3 i najnowszych danych ember, ale trafiam na blokadę drogi z unikatowymi identyfikatorami. Dostaję następujący błąd podczas uruchamiania wszystkich testów:

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) 

Wygląda nowszej wersji Cienia-danych utrzymuje się na unikalnych identyfikatorów. Niestety, nasze testy wymagają identyfikatorów na stałe dla rekordów, które są odtwarzane w bloku beforeEach każdego testu. Każdy test tworzy Foo z identyfikatorem 1001.

Czy istnieje prosty sposób na zrobienie sklepu z FixtureAdapter resetowanie wszystkich z jego danych (i w konsekwencji zapomnieć o Foo 1001)? Próbowałem zresetować urządzenia za pomocą:

App.Foo.FIXTURES = [] 

Jednak dane z ember wciąż śledzą gdzieś stare zapisy. Próbowałem również App.reset(), ale nie wydaje się, aby zresetować sklep.

Wykonujemy również

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

w bloku beforeEach przy założeniu, że będzie usunąć wszystkie dane przez utworzenie nowego sklepu, ale to nie działa.

+0

Czy to odpowiedział? Czy możesz wybrać odpowiedź lub odpowiedzieć sam? Chciałbym usunąć ten problem z "bez odpowiedzi". –

Odpowiedz

0

Początkowo wpadłem na ten sam problem, próbując wygenerować rekordy przed poszczególnymi testami. Warto pomyśleć o fixtures in the Rails sense, gdzie reprezentują zbiór rekordów, które zostaną zbudowane raz przed uruchomieniem wszystkich testów.

Jest to przeciwieństwo fabrycznego stylu budowania pojedynczych zapisów przed każdym testem, który jest wzorcem, który wydaje się śledzić.

To więcej pracy niż rozwiązania, ale zaleca się umieszczenie wszystkich urządzeń w jednym lub kilku plikach, a następnie ładowanie ich przed wszystkimi testami. Odwołajby się do tego samego rekordu z osobnych testów bez ich rekonstrukcji.

Największym zastrzeżeniem metody zamocowania jest to, że po każdym teście nie ma żadnego "efektu". W rezultacie musisz uważać na mutowanie rekordów, jeśli polegasz na oryginalnych wartościach w testach.

+0

Mutacja była problemem i powodem, dla którego chcieliśmy odtworzyć je przed każdym testem. Dzięki za informacje na temat urządzeń typu Rails. –

0

Upewnij się uruchomić Ember.reset() między każdego testu (poprzez umieszczenie go w jaśminowym bloku beforeAll)