【问题标题】:Snapshot testing error: Element type is invalid: expected a string [...]快照测试错误:元素类型无效:应为字符串 [...]
【发布时间】:2020-05-26 03:46:37
【问题描述】:

我正在尝试使用 React 和 Jest 进行一些简单的快照测试。

最初我收到此错误:Invariant failed: You should not use <Link> outside a <Router>

阅读this question 后,我更新了我的测试并将我正在测试的组件包装在:<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>
    )
}

【问题讨论】:

    标签: reactjs jestjs


    【解决方案1】:

    您没有正确导入内存路由器。它应该是这样的:

    import {MemoryRouter} from 'react-router-dom'
    

    【讨论】:

      猜你喜欢
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 2021-09-21
      • 2018-11-21
      相关资源
      最近更新 更多