【发布时间】:2019-07-13 01:55:37
【问题描述】:
我有以下来自响应的对象数组:
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'
}
}];
但是,我无法以某种方式使用扩展运算符来实现这一点。谁能看到我的错误在哪里?
【问题讨论】:
-
你试过了吗?
const input = [...baseInput]然后运行 .map 函数并匹配您要在其中输入客户数据对象的对象键。 -
因为 Customer 位于数组的第二个对象内,所以您必须用第二个对象包装它才能使其工作
标签: javascript reactjs ecmascript-6 jestjs snapshot