'JestSerializer'不可分配给'SnapshotSerializerPlugin'类型的参数

问题描述 投票:1回答:1

我在CRA应用程序中有一个名为setupTests.ts的文件,它在createSerializer()方法上显示此警告。如果我将文件重命名为js文件,则所有编译都可以进行,并且可以运行测试。虽然如果我在package.json中将"snapshotSerializers": ["enzyme-to-json/serializer"]添加为Jest配置,则可以正常工作。但是我很好奇是否有办法使其在该文件中工作。

import React from "react";
import Enzyme from "enzyme";
import Adapter from "enzyme-adapter-react-16";
import { createSerializer } from "enzyme-to-json";

expect.addSnapshotSerializer(createSerializer({mode: "deep",noKey: true}) );
Enzyme.configure({adapter: new Adapter()});
reactjs typescript jestjs enzyme
1个回答
0
投票

简短的答案是enzyme-to-json@types/enzyme之间的类型定义似乎冲突,所以只需执行以下操作

//@ts-ignore
expect.addSnapshotSerializer(createSerializer({ mode: 'deep', noKey: true }));

我想这是您的错误(我在问题中没有看到它):

((property)Options.noKey ?:布尔值|未定义无法将类型'JestSerializer'的参数分配给类型>'SnapshotSerializerPlugin'的参数。属性“ print”的类型不兼容。类型'((CommonWrapper:CommonWrapper >,serializer:> JestSerializer)=> Json'不能分配给类型'(val:any,serialize:(val:任何)=>>字符串,缩进:(str:字符串)=>字符串,选择:SnapshotSerializerOptions,颜色:> SnapshotSerializerColors)=>字符串''。参数“ serializer”和“ serialize”的类型不兼容。类型'(val:any)=>字符串'缺少类型>'JestSerializer'中的以下属性:test,printts(2345)

我遇到这个问题是因为我试图在Creact-React-App打字稿项目中使用enzyme-to-json,在该项目中我无法直接访问Jest配置,并且我不想弹出。该警告指示类型JestSerializerSnapshotSerializerPlugin不兼容。

[enzyme-to-json仓库中也存在一个开放问题,已经存在了一年多,所以不确定是否会解决]

https://github.com/adriantoine/enzyme-to-json/issues/126

就我而言,我使用的每个版本都是

"@types/enzyme": "^3.10.4"
"enzyme-to-json": "^3.4.4",
© www.soinside.com 2019 - 2024. All rights reserved.