2015-01-27 15 views
5

Mam inicjator stdlib. W tym inicjalizatorze ponownie otwieram niektóre wbudowane klasy Ember i dodajemy niestandardowe metody. Na przykład dodałem reverseEach do Ember.Enumerable i Array.Użycie inicjalizatora w teście jednostki?

Działają dobrze w aplikacji, ale w testach otrzymuję "reverseEach: undefined nie jest funkcją".

Jak mogę wskazać, że test powinien korzystać z inicjalizatora?

Próbowałem needs: [..., 'initializer:stdlib']. Nie potyka się o to, ale nadal otrzymuję błąd "nieokreślony".

Oto przykład testu:

`import { test, moduleForModel } from 'ember-qunit'` 

moduleForModel 'foo', 'foo', 
    needs: [ 
    'model:bar' 
    'initializer:stdlib' 
    ] 

test 'deleteLastNItems', -> 
    model = @subject() 
    model.set '', ['foo', 'bar', 'baz', 'quux'] 
    model.deleteLastNItems 2 # This should not die with "reverseEach: undefined is not a function" 
    deepEquals model.get('someProperty'), ['foo', 'bar'] 

Odpowiedz

-1

Można użyć ember g initializer stdlib, wygeneruje kod przykładowy dla Ciebie, w tym teście.

import Ember from 'ember'; 
import { initialize } from '../../../initializers/stdlib'; 
import { module, test } from 'qunit'; 

var registry, application; 

module('Unit | Initializer | stdlib', { 
    beforeEach: function() { 
    Ember.run(function() { 
     application = Ember.Application.create(); 
     registry = application.registry; 
     application.deferReadiness(); 
    }); 
    } 
}); 

// Replace this with your real tests. 
test('it works', function(assert) { 
    initialize(registry, application); 

    // you would normally confirm the results of the initializer here 
    assert.ok(true); 
}); 

Patrz: Ember blueprints

+1

pytanie jest sposób testowania inicjatora się, ale jak do testowania innego urządzenia (np modelu..), Które wykorzystuje się metody małpy poprawione z inicjatora. –

+0

pl, możesz wyodrębnić metodę z łatką małp do Ember.mixin, a następnie zaimportować Mixin zamiast inicjatora. – zhenhua

+0

Jestem małpką łatającą Ember, a nie model. Na przykład dodaję nową metodę do 'Ember.MutableArray': metoda' .destructiveMap() ', która modyfikuje daną tablicę zamiast zwracania nowej tablicy. –

Powiązane problemy