Redux Saga,为什么在对包含胖箭头函数的文件进行单元测试时会收到错误?

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传奇中的传奇时,我遇到了以下场景

一些套餐信息:

我使用
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
函数都被提升到顶部

如果您想了解更多信息,这里有一篇关于提升的很酷的文章:)