我正在尝试测试combineReducers,但得到的错误如下。
TypeError:_testReducer.testReducer.test11不是函数
以下是减速机
// testReducer.js
import { combineReducers } from "redux-immutable";
const test11 = (state, action) => {
switch (action.type) {
case "temp11":
return true;
default:
return state;
}
};
const test22 = (state, action) => {
switch (action.type) {
case "temp22":
return false;
default:
return state;
}
};
export const testReducer = combineReducers({
test11,
test22,
});下面是测试用例
// testReducer.test.js
import { testReducer } from "./testReducer.js";
describe("test for testReducer", () => {
it("test11", () => {
const returnTrueValue = true;
expect(
testReducer.test11(
true, {
type: "temp11",
}
)
).toEqual(returnTrueValue);
});
it("test11", () => {
const returnFalseValue = false;
expect(
testReducer.test22(
true, {
type: "temp22",
}
)
).toEqual(returnFalseValue);
});
});如果我导出还原器中的所有函数,并在测试用例中导入单个函数,它就能工作,但这并不是理想的情况。
发布于 2019-03-27 08:59:32
combineReducers返回一个函数,该函数合并了您输入的所有还原器的状态。它不允许您访问单个减速机并单独调用它们。
你应该把它用在你的案子上:
expect(
testReducer(true, {type: "temp11"}).test11
).toEqual(returnTrueValue);发布于 2021-05-11 06:47:53
我假设组件减速器如下所示:
export const initialState = {
totalValue: 0
};
const DashboardReducer = (state = initialState, action: any)=> {
switch(action.type) {
case 'case1':
.......
.......
.......
default:
return state;
}我假设根还原器如下所示:
export const rootReducer = combineReducers({
dashboard: DashboardReducer
});测试文件应该如下所示:
import { rootReducer } from './root.reducer';
import { createStore } from 'redux';
import { initialState as dashboardState } from './modules/uv_dashboard/uv_dashboard.reducer';
describe('Root Reducer Suite', () => {
let store = createStore(rootReducer)
test('loaded correctly', () => {
expect(store.getState().dashboard).toEqual(dashboardState);
});
});https://stackoverflow.com/questions/55373079
复制相似问题