Unit testing 单元测试失败,因为在构造函数中创建的模拟数据与原始模拟数据不同
我刚刚开始学习单元测试,并编写了以下测试Unit testing 单元测试失败,因为在构造函数中创建的模拟数据与原始模拟数据不同,unit-testing,typescript,jasmine,Unit Testing,Typescript,Jasmine,我刚刚开始学习单元测试,并编写了以下测试 const EXEPECTED: MergedFood = { id: '1', name: 'test mergedFood', ingredients: { '2': { foodID: '2' } } } describe('addIngredientToMergedFood()', () => { it('should add an ingred
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);
})
})
这是失败的,我得到以下失败错误:
预期合并食品({id:'1',名称:'test MergedFood',配料:对象({2:配料({foodID:'2'})})等于对象({id:'1',名称:'test MergedFood',配料:对象({2:对象({foodID:'2'})}))
我希望您可以很容易地看到,值和结构是相等的,但是结果
有一个MergedFood
和成分
包装器(我假设它们是通过构造函数创建的)
因此,我的问题是,这种情况通常是如何处理的?模拟所有数据而不是使用构造函数是常见的做法(似乎需要大量工作),还是有办法剥离包装器?您可以使用
expect(JSON.stringify(result)).toEqual(JSON.stringify(EXPECTED));
您可能应该在MergedFood中使用一个成分数组[{}],而不是{{}。否则,您的类包含名为“2”的属性。不要忘记分号(例如描述(…);或=新成分('2');