我正在开发一个Redux app&试图在ES6默认导出函数上使用Jasmine创建间谍。我已经尝试了几种不同的方法来监视函数,包括使用通配符导入来访问导入的'default'属性,但到目前为止我没有尝试过。下面是一个示例,我想测试widgets.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;
}
}
答案 0 :(得分:31)
你说你尝试导入通配符并监视默认情况?这种方法有什么问题?我刚遇到这个问题就这样解决了它:
import * as widget from './widget';
describe('widget spec', () => {
beforeEach(() => {
spyOn(widget, 'default');
});
});