Как использовать 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');
    });
});