javascript - 测试一个 redux 函数
问题描述
我正在测试这样的功能
export default (middlewares) => {
return createStore(rootReducer, applyMiddleware(...middlewares));
};
为此,我使用 jest 编写了一个模拟测试
import { createStore } from 'redux';
import createGlobalStore from '../store';
jest.mock('redux');
describe('Store test', () => {
it('testing create global store', () => {
const mockTestValue = 1;
createStore.mockResolvedValue(mockTestValue);
expect(createGlobalStore([])).toBe(mockTestValue);
});
});
但是我的代码失败了。
expect(received).toBe(expected) // Object.is equality
Expected: 1
Received: {}
我不确定我是否编写了正确的测试用例。任何人都可以帮助我纠正这个或更好地编写这个测试用例吗?
解决方案
您正在编写单元测试。下面是比较完整的单元测试代码。
index.ts
:
import { createStore, applyMiddleware } from 'redux';
function rootReducer(state) {
return state;
}
export default (middlewares) => {
return createStore(rootReducer, applyMiddleware(...middlewares));
};
index.test.js
:
import createGlobalStore from './';
import { createStore, applyMiddleware } from 'redux';
jest.mock('redux');
describe('63369776', () => {
afterAll(() => {
jest.resetAllMocks();
});
it('should pass', () => {
const mockTestValue = 1;
createStore.mockReturnValueOnce(mockTestValue);
applyMiddleware.mockReturnValueOnce('store enhancer');
expect(createGlobalStore([])).toBe(mockTestValue);
expect(createStore).toBeCalledWith(expect.any(Function), 'store enhancer');
expect(applyMiddleware).toBeCalledWith(...[]);
});
});
带有覆盖率报告的单元测试结果:
PASS src/stackoverflow/63369776/index.test.js (11.603s)
63369776
✓ should pass (7ms)
----------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files | 75 | 100 | 50 | 75 | |
index.js | 75 | 100 | 50 | 75 | 4 |
----------|----------|----------|----------|----------|-------------------|
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 12.977s
源代码:https ://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/63369776
推荐阅读
- java - 在 GUI 中创建没有“时间漂移”的重复操作
- java - 处理不同的 JSON 请求 Jackson
- node.js - express.js CSURF cookie 和 header 匹配,返回 403
- python - Numpy:重载 str 函数以在所有代码中获取指数符号
- scala - 如何动态提供 N 个编解码器以将字段作为 VectorCodec 处理,用于不包含大小字节的二进制字段的记录
- c - 检查重叠的日期和时间
- mongodb - 如何使用 _id 列的自定义值将数据框保存在 Spark 中的 Mongodb 中
- arm - FreeRTOS 是否保证第一个计时器滴答时间正好是 1 毫秒?
- html - HWND 类型不匹配
- javascript - 如何动态地将标签附加到
标签?