[英]JavaScript Jasmine Test Failing
我有這個特定的JavaScript代碼
function hideGreenCarsFromView(greenCar) {
if (greenCar) {
var car = parkingCarTools.getContainerOfgreenCar(greenCar, sr.pageModel.garageData.cars);
if (car && car.greenCars && car.greenCars.length > 0) {
parkingCarTools.removegreenCarFromgreenCarsList(greenCar, car.greenCars);
}
}
if (car.greenCars && car.greenCars.length == 0) {
sr.showgreenCarsHeader = false;
}
};
在這段代碼中,我將從視圖中刪除列表中的綠色汽車。
為了測試這個,我寫了一個Jasmine測試,如下所示:
it('when green car is invalidLicensePlate, should not remove green car from view', function() {
//Arrange
var myGreenCars = undefined;
var expectedGreenCars = [{
licensePlateNumber: 1,
description: "BMW",
quantity: 1,
greencars: [{
licensePlateNumber: 4,
ownersNumber: 1,
description: 'vallicensePlateNumber green car 1',
quantity: 1
}, {
licensePlateNumber: 5,
ownersNumber: 1,
description: 'vallicensePlateNumber green car 2',
quantity: 2
}]
}, {
licensePlateNumber: 2,
description: "Mazda",
quantity: 3,
greencars: [{
licensePlateNumber: 6,
ownersNumber: 2,
description: 'vallicensePlateNumber green car 3',
quantity: 1
}, {
licensePlateNumber: 7,
ownersNumber: 2,
description: 'vallicensePlateNumber green car 4',
quantity: 2
}]
}, {
licensePlateNumber: 3,
description: "Toyota",
quantity: 1
}];
//Act
dut = compileDirective();
dut.removegreen carItemFromView(myGreenCars);
//Assert
expect(dut.pageModel.cartData.items.length).toBe(3);
expect(dut.pageModel.cartData.items).toEqual(expectedGreenCars);
expect(dut.pageModel.cartData.items[0].greencars.length).toBe(2);
expect(dut.pageModel.cartData.items[1].greencars.length).toBe(2);
});
我的測試在dut.removegreen carItemFromView(myGreenCars);
失敗了dut.removegreen carItemFromView(myGreenCars);
我明白了
'undefined'不在對象中(評估'car.greenCars')
錯誤。
我在這做錯了什么? 這是我第一次做茉莉花測試,我有點失落,提前謝謝你。
在測試的頂部,你將myGreenCars
設置為undefined
,然后傳入。它會通過一些我們看不到的代碼並最終傳遞給hideGreenCarsFromView
,我認為仍然是undefined
。
if (greenCar)
計算結果為false,那么它會跳過car
的初始化,然后點擊下一個if
語句並在car
上調用.greenCars
,這是undefined
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.