Я пытаюсь провести простое тестирование снимков с помощью React и Jest.
Первоначально я получал эту ошибку: Invariant failed: You should not use <Link> outside a <Router>
После прочтения этого вопроса Я обновил свой тест и заключил тестируемый компонент в: <MemoryRouter>...</MemoryRouter>
. Как только я это сделал, я начал получать новую ошибку: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.
Понятия не имею, что это значит.
Мой тест:
import React from "react";
import BookTile from "./BookTile";
import MemoryRouter from "react-router-dom";
import renderer from "react-test-renderer";
test("my test", () => {
let book = {};
const component = renderer.create(
<MemoryRouter>
<BookTile book={book} />
</MemoryRouter>
)
let tree = component.toJSON();
expect(tree).toMatchSnapshot();
})
Тестируемый мной компонент:
import React from "react";
import {Link} from "react-router-dom";
export default function BookTile(props) {
return (
<Link to={`/book/${props.book.id}`}>
<div className="book-tile" style={{'backgroundImage': `url(${process.env.REACT_APP_API_URL}/uploads/${props.book.cover_image_file_name})`}}>
<div className='book-tile-title'>
{props.book.title}
</div>
</div>
</Link>
)
}