我试图进行异步动作测试,但失败了:(
有问题的测试就是这个:https://github.com/persocon/destiny-weekly/blob/test/test/actions/index.spec.jsx
我收到此错误消息:
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));
}
)
}
}
答案 0 :(得分:1)
解决方案是实现 Isomorphic Fetch
因为4m1r告诉它这是一个人为的功能而无法找到。
答案 1 :(得分:1)
Ya,Async Action Creators示例正在使用'fetch',这有点人为,但应该在理论上有效。一个简单的解决方案可能是用isomorphic fetch library来实现它。祝你好运!