使用Webpack + karma +等进行Redux异步测试

时间:2016-05-09 19:12:10

标签: testing asynchronous ecmascript-6 karma-runner redux

我试图进行异步动作测试,但失败了:(

有问题的测试就是这个:https://github.com/persocon/destiny-weekly/blob/test/test/actions/index.spec.jsx

enter image description here

我收到此错误消息:

  

1)在完成提取所有选项时填写GET_OPTIONS        异步操作        undefined不是一个对象(评估' store.dispatch(actions.getOptions())。然后')   /Users/persocon/Projects/destiny-weekly/test/test.bundle.js:14669:42< - webpack:///test/actions/index.spec.jsx:49:7

我不知道这意味着什么,如果这是为了帮助我更加困惑。

更新

必须在动作本身上实现fetch而不是我正在使用的$ .get但是现在我得到一个指向我的动作的新错误:v甚至它在浏览器上工作:

  

1)在完成提取所有选项时填写GET_OPTIONS        异步操作        无法找到变量:fetch   /Users/persocon/Projects/destiny-weekly/test/test.bundle.js:42473:9< - webpack:///src/app/javascript/actions/index.jsx:32:9   /Users/persocon/Projects/destiny-weekly/test/test.bundle.js:15691:23< - webpack:///~/redux-thunk/lib/index.js:12:0   /Users/persocon/Projects/destiny-weekly/test/test.bundle.js:14669:20< - webpack:///test/actions/index.spec.jsx:48:19

更新2 行动代码:

const setOptions = (result) => {
return {
    type: 'GET_OPTIONS',
    options: result
}
}

const getOptions = () => {


return dispatch => {
    dispatch(startLoading())
    return fetch('/api/selectActivity')
            .then(response => response.json())
            .then( json => {
                dispatch(doneLoading());
                json.unshift({advisorTypeCategory: "Selecione Uma Atividade", identifier: "", disabled: "disabled"});
                dispatch(setOptions(json));
            }
        )
 }
}

2 个答案:

答案 0 :(得分:1)

解决方案是实现 Isomorphic Fetch

因为4m1r告诉它这是一个人为的功能而无法找到。

答案 1 :(得分:1)

Ya,Async Action Creators示例正在使用'fetch',这有点人为,但应该在理论上有效。一个简单的解决方案可能是用isomorphic fetch library来实现它。祝你好运!