我正在使用React、Jest和Typescript以及以下these文档来使用此代码创建单元测试:expect(HorizontalNotIndented.props().includedProp).to.equal(dummyValue);
我已经安装了所有类型,但是当我在测试中使用to
时,我得到了错误Property 'to' does not exist on type 'FunctionMatchers<any>'.
。
看起来可能有一些混乱,是否to
是来自笑话或茉莉花?我不是100%肯定,但我完全按照酶文件。
更新
我现在在构建这个测试时遇到了一些问题-下面的文档和注解似乎不允许测试工作。我正在尝试测试 prop 渲染是否正确:
const dummyValue = {
background: {
color: 'rgba(38, 176, 17, 0.2)',
value: 100,
},
foreground: {
color: 'rgb(38, 176, 17)',
value: 80,
},
};
const HorizontalNotIndented = shallow(
<Horizontal
value={dummyValue}
/>,
);
HorizontalNotIndented.setProps({
value
});
describe('HCGauge', () => {
test('Test to see if props are in rendered component', () => {
expect(HorizontalNotIndented.props().value).toEqual(dummyValue);
抛出错误:
expect(received).toEqual(expected) // deep equality
Expected: {"background": {"color": "rgba(38, 176, 17, 0.2)", "value": 100}, "foreground": {"color": "rgb(38, 176, 17)", "value": 80}}
Received: undefined
62 | test('Test to see if props are in rendered component', () => {
63 | // expect('value' in HorizontalNotIndented.props()).toEqual(dummyValue);
> 64 | expect(HorizontalNotIndented.props().includedProp).toEqual(dummyValue);
|
2条答案
按热度按时间kninwzqo1#
如果您使用的是Jest,则应使用
.toBe()
而不是.to.equal()
,如下所述:https://jestjs.io/docs/en/expect.html#tobevalue
如果参数(
dummyValue
)是一个对象,则应按如下所述使用.toMatchObject()
:https://jestjs.io/docs/en/expect.html#tomatchobjectobject
piok6c0g2#
我在TypeScript中使用jest-image-matcher时遇到过类似的问题
解决方案:
允许我们添加自定义匹配器,为了让jest知道这个自定义匹配器,我们需要扩展匹配器类型
同样,我们可以根据需求添加/替换新的自定义匹配器。