运行 使用反应 cookie 进行测试时无效的 `cookies`
Invalid prop `cookies` when running test with react cookies
我在我的应用程序中使用 react-cookies 包并尝试将测试写入我的应用程序。我正在尝试模拟 cookie.remove
方法并验证它,下面是代码:
// App.js
export class App extends Component {
static propTypes = {
cookies: PropTypes.instanceOf(Cookies).isRequired,
}
handleClick() {
// Remove data from browser cookies
this.props.cookies.remove('data', { path: '/' });
}
// 测试文件
it('should be able to remove cookies', () => {
const mockFn = jest.fn();
const cookies = { remove: mockFn };
const button = mount(<App cookies={cookies} />).find('button');
button.props().onClick();
expect(mockRemove).toHaveBeenCalledTimes(1);
expect(mockRemove).toHaveBeenCalledWith('data', { path: '/' });
});
测试 运行 正确并通过了,但是在控制台中有错误的 proptype 传递到 props 的警告:
console.error node_modules/react/node_modules/prop-types/checkPropTypes.js:20
Warning: Failed prop type: Invalid prop `cookies` of type `Object` supplied to `App`, expected instance of `Cookies`.
如何在对 remove
方法进行存根时将 Cookies
的实例提供到我的测试中?
通过初始化 class 然后修改方法使其工作,完整代码:
it('should be able to remove cookies', () => {
const mockFn = jest.fn();
const cookies = new Cookies();
cookies.remove = mockFn;
const button = mount(<App cookies={cookies} />).find('button');
button.props().onClick();
expect(mockRemove).toHaveBeenCalledTimes(1);
expect(mockRemove).toHaveBeenCalledWith('data', { path: '/' });
});
我在我的应用程序中使用 react-cookies 包并尝试将测试写入我的应用程序。我正在尝试模拟 cookie.remove
方法并验证它,下面是代码:
// App.js
export class App extends Component {
static propTypes = {
cookies: PropTypes.instanceOf(Cookies).isRequired,
}
handleClick() {
// Remove data from browser cookies
this.props.cookies.remove('data', { path: '/' });
}
// 测试文件
it('should be able to remove cookies', () => {
const mockFn = jest.fn();
const cookies = { remove: mockFn };
const button = mount(<App cookies={cookies} />).find('button');
button.props().onClick();
expect(mockRemove).toHaveBeenCalledTimes(1);
expect(mockRemove).toHaveBeenCalledWith('data', { path: '/' });
});
测试 运行 正确并通过了,但是在控制台中有错误的 proptype 传递到 props 的警告:
console.error node_modules/react/node_modules/prop-types/checkPropTypes.js:20
Warning: Failed prop type: Invalid prop `cookies` of type `Object` supplied to `App`, expected instance of `Cookies`.
如何在对 remove
方法进行存根时将 Cookies
的实例提供到我的测试中?
通过初始化 class 然后修改方法使其工作,完整代码:
it('should be able to remove cookies', () => {
const mockFn = jest.fn();
const cookies = new Cookies();
cookies.remove = mockFn;
const button = mount(<App cookies={cookies} />).find('button');
button.props().onClick();
expect(mockRemove).toHaveBeenCalledTimes(1);
expect(mockRemove).toHaveBeenCalledWith('data', { path: '/' });
});