Ошибка тестирования снимка: недопустимый тип элемента: ожидается строка [...] - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь провести простое тестирование снимков с помощью 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>
    )
}

1 Ответ

0 голосов
/ 26 мая 2020

Вы неправильно импортируете память маршрутизатора. Вот как это должно выглядеть:

import {MemoryRouter} from 'react-router-dom'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...