Javascript ES6测试redux saga私有函数
我有一个react本地应用程序,希望在不导出私有函数的情况下测试我的redux传奇,下面是我的代码Javascript ES6测试redux saga私有函数,javascript,react-native,ecmascript-6,mocha.js,redux-saga,Javascript,React Native,Ecmascript 6,Mocha.js,Redux Saga,我有一个react本地应用程序,希望在不导出私有函数的情况下测试我的redux传奇,下面是我的代码 // my saga file (login.js) function* login(action) { try { } catch (error) { } } export default function* loginWatcher() { yield takeLatest('SOME_ACTION_TYPE', login); } // my test file (l
// my saga file (login.js)
function* login(action) {
try {
} catch (error) {
}
}
export default function* loginWatcher() {
yield takeLatest('SOME_ACTION_TYPE', login);
}
// my test file (login.test.js)
describe('Login Saga', () => {
describe('watch', () => {
it('waits for the action', () => {
const iterator = loginSaga();
const expectedYield = takeLatest('SOME_ACTION_TYPE', login)
const actualYield = iterator.next().value;
expect(expectedYield).to.deep.equal(actualYield);
});
});
});
我不想导出saga文件中的登录函数。
我读过关于rewire的文章,但它似乎还不支持ES6
有没有什么我可以做的
更新
我将此代码添加到我的saga文件中,以便在测试中使用私有函数
let tests = {
_login: null
}
if(process.env.NODE_ENV === "test") {
tests._login = login;
};
export { tests };
我不知道这是否是最好的方法,因为我讨厌更改文件以便通过测试,但它是有效的
希望有另一种方法您不想导出saga文件中的登录函数有什么特殊原因吗?没有理由导出它,它应该只在watcher函数执行操作时触发。导出它的一个原因是您可以测试它。您不应该只为测试而导出私有函数,这不是一个好的做法。不过,我更新的代码运行良好。不知道还有没有别的办法。