TypeError: Cannot read property 'change' of undefined
TypeError: Cannot read property 'change' of undefined
为什么下面的代码会出现这个错误?我已经从 'react-testing-library' 导入了 'Simulate',但错误指出 'Simulate' 是 'undefined'
import React from 'react';
import { render, Simulate } from 'react-testing-library';
import CommentFeed from './CommentFeed';
const createProps = props => ({
header: 'Comment Feed',
comments: [
{
author: 'Ian Wilson',
text: 'A boats a boat but a mystery box could be anything.',
},
{
author: 'Max Powers Jr',
text: 'Krypton sucks.',
},
],
createComment: jest.fn(),
...props,
})
describe('CommentFeed', () => {
const props = { header : 'Comment Feed', comments : []};
/* ... */
it('allows the user to add a comment', () => {
// Arrange
const newComment = { author: 'Socrates', text: 'Why?' };
let props = createProps();
const { container, getByLabelText } = render(<CommentFeed {...props} />);
const authorNode = getByLabelText('Author');
const textNode = getByLabelText('Comment');
const formNode = container.querySelector('form');
// Act
authorNode.value = newComment.author;
textNode.value = newComment.text;
Simulate.change(authorNode); // Where the error occurs
Simulate.change(textNode);
Simulate.submit(formNode);
// Assert
expect(props.createComment).toHaveBeenCalledTimes(1);
expect(props.createComment).toHaveBeenCalledWith(newComment);
});
});
我正在搜索此问题,但找不到有关 'Simulate' 行为的任何信息
尝试过 var test = new Simulate(); ?
然后test.etc.....
Simulate
已从 react-testing-library 中删除。今天需要用到的是fireEvent
.
你可以这样使用:
import { fireEvent } from 'react-testing-library'
// Then in your test
fireEvent.change(authorNode, { target: { value: newComment.author } })
您可以在 official docs 中阅读有关 fireEvent
的更多信息。
为什么下面的代码会出现这个错误?我已经从 'react-testing-library' 导入了 'Simulate',但错误指出 'Simulate' 是 'undefined'
import React from 'react';
import { render, Simulate } from 'react-testing-library';
import CommentFeed from './CommentFeed';
const createProps = props => ({
header: 'Comment Feed',
comments: [
{
author: 'Ian Wilson',
text: 'A boats a boat but a mystery box could be anything.',
},
{
author: 'Max Powers Jr',
text: 'Krypton sucks.',
},
],
createComment: jest.fn(),
...props,
})
describe('CommentFeed', () => {
const props = { header : 'Comment Feed', comments : []};
/* ... */
it('allows the user to add a comment', () => {
// Arrange
const newComment = { author: 'Socrates', text: 'Why?' };
let props = createProps();
const { container, getByLabelText } = render(<CommentFeed {...props} />);
const authorNode = getByLabelText('Author');
const textNode = getByLabelText('Comment');
const formNode = container.querySelector('form');
// Act
authorNode.value = newComment.author;
textNode.value = newComment.text;
Simulate.change(authorNode); // Where the error occurs
Simulate.change(textNode);
Simulate.submit(formNode);
// Assert
expect(props.createComment).toHaveBeenCalledTimes(1);
expect(props.createComment).toHaveBeenCalledWith(newComment);
});
});
我正在搜索此问题,但找不到有关 'Simulate' 行为的任何信息
尝试过 var test = new Simulate(); ?
然后test.etc.....
Simulate
已从 react-testing-library 中删除。今天需要用到的是fireEvent
.
你可以这样使用:
import { fireEvent } from 'react-testing-library'
// Then in your test
fireEvent.change(authorNode, { target: { value: newComment.author } })
您可以在 official docs 中阅读有关 fireEvent
的更多信息。