我从一个响应中得到了下面的对象数组:
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'
}
}];然而,我无法以某种方式利用扩散运算符来实现这一点。有人能看出我的错误在哪里吗?
发布于 2019-02-19 22:26:30
您的baseInput是一个包含两个项的数组。扩展运算符在数组或对象上工作,您在这里所做的是将数组扩展到目标对象中。
如果您的模型没有更改,您可以简单地将索引对象扩展到您的目标中,如下所示:
const input = [{
...baseInput[0]
},{
...baseInput[1],
Customer:
{ salutation: 'Mr',
givenName: 'James',
familyName: 'Jamesy'
}
}];https://stackoverflow.com/questions/54768339
复制相似问题