جاوااسکریپت - چگونه در Jest بخشی از یک رشته را در آرایهای از اشیاء مطابقت دهیم؟


من از موارد زیر استفاده میکنم:

  • Node.js: 9.8.0
  • جیست: ۲۲.۴.۲

یک آرایه به صورت زیر از تابع myFunction بازگردانده میشود:

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

و من میخواهم آن را با نوع آرایه زیر مطابقت دهم:

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

به طور خلاصه: من میخواهم کل شناسه را مطابقت دهم، اما تنها بخشی از مسیر را.

اما من واقعاً نمیدانم چگونه... من روشهای زیر را امتحان کردهام:

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

اما این به من خطا میدهد.

پاسخ شماره ۱

من با کد زیر حل کردهام:

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