2015-12-06 20 views
14

Bir ES6 varsayılan dışa aktarılmış işlevinde Jasmine kullanarak casus oluşturmaya çalışırken bir Redux uygulaması & üzerinde çalışıyorum. İçe aktarma işleminin 'varsayılan' özelliğine erişmek için bir joker karakter içe aktarma kullanma da dahil olmak üzere, işlev üzerinde casusluk yapmanın birkaç farklı yöntemini denedim, ancak denediğim hiçbir şey şu ana kadar işe yaramadı. Aşağıda, widgets.js'u test etmek ve widget işlevi üzerinde casusluk yapmak istediğim bir örnek var. widget.js'dan işlevi dışa aktarma yolunu değiştirmek zorunda kalmadan bunu başarmanın bir yolu var mı?Yasemin'i ES6 varsayılan dışa aktarma yoluyla aktarılan bir işlev için casusluk yapmak için nasıl kullanırım?

widget.js

import { Map } from 'immutable'; 
import { CREATE_WIDGET } from 'actions'; 

const initialState = Map({ 
    id: undefined, 
    name: undefined 
}); 

export default function widget(state=initialState, action) { 
    switch (action.type) { 
    case CREATE_WIDGET: 
     return state.update((widget) => widget.merge(action.widget)); 

    default: 
     return state; 
    } 
} 

widgets.js

import { OrderedMap } from 'immutable'; 
import { CREATE_ROOM } from 'actions'; 
import widget from './widget'; 

const initialState = OrderedMap(); 

export default function widgets(state=initialState, action={}) { 
    switch (action.type) { 
    case CREATE_ROOM: 
     return state.set(action.widget.id, widget(undefined, action)); 

    default: 
     return state; 
    } 
} 
+0

Eğer adlandırılmış ihracat ile ne yapmak istediğinizi yapmanın bir yolu var mı? Aslında o kadar farklı değiller. – Bergi

+0

Hayır, yapmam. Bu eklentiden bahsedildim, ancak doğru şekilde çalışamadım ve sadece bir nesneyi bir yöntem olarak dışa aktarmak zorunda olduğumu hissettim. – evkline

cevap

19

Sen joker ithal ve varsayılan casusluk çalıştı söylüyor? Bu yaklaşımla ilgili sorun neydi? Sadece bu sorunla karşılaştık ve bunu yaparken benim için çözüldü:

import * as widget from './widget'; 

describe('widget spec',() => { 
    beforeEach(() => { 
     spyOn(widget, 'default'); 
    }); 
}); 
+0

bununla ilgili sorun, oluşturduğunuzda ağaç titremesinin meydana gelme yeteneğini ortadan kaldırır. Gerçekten kullandığınız parçayı içe aktararak olabildiğince optimize edilmiş olmak istersiniz. –

+0

gerçekten önemli değil çünkü üretim kodu zaten test dosyalarını içermemelidir –

İlgili konular