首页 > 解决方案 > 如何在 Jest 中部分匹配对象数组中的字符串?

问题描述

我正在使用以下内容:

从 myFunction 返回一个类似以下的数组:

[
    ...
    {
        id: 00000000,
        path: "www.someUrl.com/some/path/to"
    }
    ...
]

我想将它与以下类型的数组匹配:

const output = [
    ...
    {
        id: 00000000,
        path: "path/some/path/to"
    }
    ...
]

简而言之:我想完全匹配 id,但只是部分匹配路径。

但我只是不知道如何......我尝试了以下方法:

expect(myFunction()).toEqual(expect.arrayContaining(output));

但是这给了我一个错误。

标签: javascripttypescriptjestjs

解决方案


我已经用以下代码解决了:

const output = JSON.parse(readFileSync('./myFunction.json', 'utf8'));

describe('Testing myFunction.', () => {
    test('Deafult test.', () => {
        const input = myFunction();

        input.map((value, index) => {
            const { imageURL, ...remaining } = output[index];

            expect(value).toMatchObject({
                ...remaining,
                imageURL: expect.stringContaining(imageURL)
            });
        });
    });
});

推荐阅读