我有这个特定的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;
}
};
在此代码段中,我将从视图中删除列表中的绿色汽车。
为了测试这个,我写了一个茉莉花测试,如下所示:
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);
我得到了
'未定义'不是一个对象(评估' car.greenCars')
错误。
我在这里做错了什么?这是我第一次做茉莉花测试,我有点失落,提前谢谢你。
答案 0 :(得分:0)
在测试的顶部,您将myGreenCars
设置为undefined
然后传入。它会查看一些我们看不到的代码并最终传递给hideGreenCarsFromView
,我认为仍然是undefined
。
if (greenCar)
评估为false,因此它会跳过car
的初始化,然后点击下一个if
语句并在.greenCars
上调用car
,这是undefined
<%@ page session="false" %>
。