如何在Jest中的对象数组中部分匹配字符串?

时间:2018-07-06 02:59:00

标签: javascript typescript jestjs

我正在使用以下内容:

  • Node.js:9.8.0
  • 笑话:22.4.2

从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));

但是这给了我一个错误。

1 个答案:

答案 0 :(得分:0)

我已经解决了以下代码:

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)
            });
        });
    });
});