2017-02-11 75 views
0
不同

我刚开始学习单元测试,我写了下面的测试单元测试失败,因为在构造函数来创建模拟的数据从原模拟数据

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' }) }) }) to equal Object({ id: '1', name: 'test mergedFood', ingredients: Object({ 2: Object({ foodID: '2' }) }) })

正如我希望你能很容易地看到,值和结构是相等的,但resultMergedFoodIngredient包装(我假设,因为它们是通过构造函数创建)。

所以我的问题是,这种情况通常如何处理?嘲笑所有数据而不是使用构造函数是很常见的(看起来像很多工作)还是有办法去除包装?

回答

0

可以使用

expect(JSON.stringify(result)).toEqual(JSON.stringify(EXPECTED)); 

你或许应该使用的成分的阵列在MergedFood,[{}]代替{{}}。否则,你的类包含一个名为'2'的属性。 (...); or = new Ingredient('2');