我刚刚开始学习单元测试,我写了以下测试
const EXEPECTED: MergedFood = {
id: '1',
name: 'test mergedFood',
ingredients: {
'2': {
foodID: '2'
}
}
}
describe('addIngredientToMergedFood()', () => {
it('should add an ingredient to a mergedFood', () => {
const mergedFood: MergedFood = new MergedFood('1', 'test mergedFood');
const ingredient: Ingredient = new Ingredient('2')
const result: MergedFood = addIngredientToMergedFood(ingredient, mergedFood);
expect(result).toEqual(EXEPECTED);
})
})
这是失败的,我收到以下失败错误:
Expected MergedFood({ id: '1', name: 'test mergedFood', ingredients: Object({ 2: Ingredient({ foodID: '2' }( }( }( 等于 Object({ id: '1', name: 'test mergedFood', ingredients: Object({ 2: Object({ foodID: '2' }( }( }(
我希望您可以轻松看到,值和结构是相等的,但result
有一个MergedFood
和Ingredient
包装器(我假设因为它们是通过构造函数创建的(。
所以我的问题是,这种情况通常是如何处理的?模拟所有数据而不是使用构造函数(似乎有很多工作(是否很常见,或者有没有办法剥离包装器?
expect(JSON.stringify(result)).toEqual(JSON.stringify(EXPECTED));
您可能应该在MergedFood中使用一系列成分,[{}]而不是{{}}。否则,您的类包含一个名为"2"的属性。不要忘记分号(例如描述(...;或 = 新成分('2'(;