nhl*_*inh 6 unit-testing typescript reactjs react-router react-router-dom
我尝试使用打字稿实现的 React 组件编写单元测试,但是在模拟某些钩子函数时出现错误。
我的单元测试工具:
import React from 'react';
import { useHistory } from 'react-router-dom';
import { MyComponent } from './index';
jest.mock('react-router-dom', () => ({
...jest.requireActual('react-router-dom'),
useHistory: () => ({ replace: jest.fn() ]),
}));
describe('MyComponent', () => {
it('Should pass', () => {
// My render implementation
(useHistory as jest.Mock).mockReturnValue({ pathname: '/test' });
});
});
Run Code Online (Sandbox Code Playgroud)
当我运行测试用例时,它抛出一个错误:
类型错误:_reactRouterDom.useHistory.mockReturnValue 不是函数
sli*_*wp2 19
您已分配一个匿名函数来useHistory代替 所创建的模拟函数jest.fn()。.mockReturnValue()方法存在于jest.fn(). 尝试:
import { useHistory } from 'react-router-dom';
jest.mock('react-router-dom', () => ({
...(jest.requireActual('react-router-dom') as object),
useHistory: jest.fn(),
}));
describe('MyComponent', () => {
test('should pass', () => {
(useHistory as jest.Mock).mockReturnValue({ location: { pathname: '/test' } });
const history = useHistory();
expect(history.location.pathname).toBe('/test');
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8127 次 |
| 最近记录: |