Redux Saga,为什么在对包含胖箭头函数的文件进行单元测试时会收到错误?
在尝试测试redux传奇中的传奇时,我遇到了以下场景 一些套餐信息: 我使用Redux Saga,为什么在对包含胖箭头函数的文件进行单元测试时会收到错误?,redux,redux-saga,Redux,Redux Saga,在尝试测试redux传奇中的传奇时,我遇到了以下场景 一些套餐信息: 我使用redux-saga@0.15.6,redux@3.7.2带有节点v9.5.0和npm 5.6.0 我的结构如下: sagas index.js index.spec.js 在index.js中,我定义了我的传奇故事。我的基本想法是: function doSomething() { /* Some code */ } function* notExportedSaga() { yield t
redux-saga@0.15.6
,redux@3.7.2
带有节点v9.5.0
和npm 5.6.0
我的结构如下:
sagas
index.js
index.spec.js
在index.js
中,我定义了我的传奇故事。我的基本想法是:
function doSomething() {
/* Some code */
}
function* notExportedSaga() {
yield takeLatest(SOME_ACTION, doSomething)
}
export function* exportedSaga(action) {
yield put({ type: OTHER_ACTION, payload: somePayload })
}
在index.spec.js
中,我想测试我的传奇故事。我的文件顶部有一个import
:
import { exportedSaga } from './index'
根据我描述的结构和代码,这一切都很好。但是,如果我将doSomething
的定义从原来的定义更改为胖箭头函数:
const doSomething = () => {
/* Some code */
}
在运行单元测试时,会出现以下错误:
console.error node_modules/redux-saga/lib/internal/utils.js:240
uncaught at rootSaga
at rootSaga
at rootSaga
ReferenceError: doSomething is not defined
你知道为什么会这样吗
我打开了一个,因为我不知道这是否是一个bug。函数声明
function doSomething() { }
const doSomething = () => { }
正在被提升到顶部
函数表达式类似
function doSomething() { }
const doSomething = () => { }
未被提升
这就是为什么没有定义doSomething
-在调用生成器函数时,表达式函数const doSomething=()=>{}
没有定义,而notExportedSaga
和exportedSaga
函数都被提升到顶部
如果您想了解更多,这里有一篇关于提升的很酷的文章:)函数声明
function doSomething() { }
const doSomething = () => { }
正在被提升到顶部
函数表达式类似
function doSomething() { }
const doSomething = () => { }
未被提升
这就是为什么没有定义doSomething
-在调用生成器函数时,表达式函数const doSomething=()=>{}
没有定义,而notExportedSaga
和exportedSaga
函数都被提升到顶部
如果您想了解更多信息,这里有一篇关于提升的很酷的文章:)