У меня есть следующий массив объектов, который получается из ответа:
const baseInput = [{
PaymentRequirementsDetail:
{ dateDue: '12/02/2019',
outstandingMinimum: { Money: { amount: '5.20', code: 'GBP' } },
overlimit: { Money: { amount: '345.20', code: 'GBP' } },
arrears: { Money: { amount: '345.20', code: 'GBP' } } }
},
{ Account: {},
AccountId: '00000012345',
CardBrand: 'SOMEBRAND',
isAccountElibible: false,
Customer:
{ salutation: 'Mr',
givenName: 'James',
familyName: 'Jamesy',
suffix: 'Dr' },
Delinquency: { monthsInArrears: 0, isOverlimit: true } }]
Затем я преобразовываю ответ с помощью набора функций и возвращаю дружественную, отформатированную версию выше.
const baseOutput = transform(baseInput);
Возвращает:
{ name: 'Mr James Jamesy, Dr',
cardBrand: 'SOMEBRAND',
isAccountElibible: false,
delinquency: { monthsInArrears: 0, isOverlimit: true },
dateDue: '12/02/2019',
outstandingMinimumAmount: 'GBP, 5.20',
overlimitAmount: 'GBP, 345.20',
arrearsAmount: 'GBP, 345.20' }
Теперь я хотел бы проверить это и сгенерировать несколько снимков.
Я могу скопировать / вставить приведенный выше код в мои тестовые случаи и изменить значения, как я делаю свои утверждения, что работает нормально.Вот так;
test('should omit suffix if it is undefined', () => {
const input = [{
PaymentRequirementsDetail:
{ dateDue: '12/02/2019',
outstandingMinimum: { Money: { amount: '5.20', code: 'GBP' } },
overlimit: { Money: { amount: '345.20', code: 'GBP' } },
arrears: { Money: { amount: '345.20', code: 'GBP' } } }
},
{ Account: {},
AccountId: '00000012345',
CardBrand: 'SOMEBRAND',
isAccountElibible: true,
Customer:
{ salutation: 'Mr',
givenName: 'James',
familyName: 'Jamesy' },
Delinquency: { monthsInArrears: 0, isOverlimit: true } }];
const output = transform(input);
expect(baseOutput).toMatchDiffSnapshot(output);
});
Это сгенерирует мой снимок, как мне потребуется, и я смогу четко увидеть разницу между версией с суффиксом и версией без суффикса.
ОднакоЯ считаю, что есть более чистый способ сделать это с помощью оператора распространения объекта.Вместо всего вышеприведенного кода я должен остаться с:
const input = [{
...baseInput,
Customer:
{ salutation: 'Mr',
givenName: 'James',
familyName: 'Jamesy'
}
}];
Однако я не могу использовать оператор распространения таким образом, чтобы достичь этого.Кто-нибудь может увидеть, где моя ошибка?