Как использовать Jasmine для отслеживания функции, импортируемой с помощью экспорта по умолчанию ES6?
Я работаю над приложением Redux и пытаюсь создать шпиона, используя Jasmine на экспортированной по умолчанию ES6-функции. Я попытался несколько способов отслеживания функции, в том числе использование подстановочного импорта для доступа к свойству "default" импорта, но ничто из того, что я пробовал, пока не работает. Ниже приведен пример, где я хочу протестировать widgets.js
и шпионить за функцией виджетов. Есть ли способ достичь этого, не widget.js
функции из widget.js
?
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;
}
}
Ответы
Ответ 1
Вы говорите, что пытались импортировать подстановочный знак и шпионить за дефолтом? В чем проблема с этим подходом? Я просто столкнулся с этой проблемой, и это решило это для меня:
import * as widget from './widget';
describe('widget spec', () => {
beforeEach(() => {
spyOn(widget, 'default');
});
});