我在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()});
简短的答案是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配置,并且我不想弹出。该警告指示类型JestSerializer
和SnapshotSerializerPlugin
不兼容。
[enzyme-to-json仓库中也存在一个开放问题,已经存在了一年多,所以不确定是否会解决]
https://github.com/adriantoine/enzyme-to-json/issues/126
就我而言,我使用的每个版本都是
"@types/enzyme": "^3.10.4"
"enzyme-to-json": "^3.4.4",