javascript - Hur matchar man delvis en sträng i en array av objekt i Jest?


Jag använder följande:

  • Node.js: 9.8.0
  • Jest: 22.4.2

Det finns en array som följande som returneras från myFunction:

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

Och jag vill matcha det mot följande typ av array:

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

I korthet: Jag vill matcha id helt, men bara delvis matcha sökvägen.

Men jag vet bara inte hur... Jag har försökt följande:

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

Men det ger mig ett fel.

Svar #1

Jag har löst det med följande kod:

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

Relaterade artiklar