[英]JavaScript Jasmine Test Failing
I have this specific JavaScript code 我有这个特定的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;
}
};
In this code snippet I am removing the green cars I have in a list from the view. 在这段代码中,我将从视图中删除列表中的绿色汽车。
To test this I have written a Jasmine test which looks like the following: 为了测试这个,我写了一个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);
});
My test fails at dut.removegreen carItemFromView(myGreenCars);
我的测试在
dut.removegreen carItemFromView(myGreenCars);
失败了dut.removegreen carItemFromView(myGreenCars);
I get the 我明白了
'undefined' in not an object (evaluating 'car.greenCars')
'undefined'不在对象中(评估'car.greenCars')
error. 错误。
What am I doing wrong here ? 我在这做错了什么? this is my first time doing Jasmine tests, I am a little lost, thank you in advance.
这是我第一次做茉莉花测试,我有点失落,提前谢谢你。
at the top of the test, you set myGreenCars
to undefined
which is then passed in. It goes through some code that we can't see and is ultimately passed to hideGreenCarsFromView
, I assume still as undefined
. 在测试的顶部,你将
myGreenCars
设置为undefined
,然后传入。它会通过一些我们看不到的代码并最终传递给hideGreenCarsFromView
,我认为仍然是undefined
。
if (greenCar)
evaluates to false, so it skips the initialization of car
and then hits the next if
statement and calls .greenCars
on car
, which is undefined
. if (greenCar)
计算结果为false,那么它会跳过car
的初始化,然后点击下一个if
语句并在car
上调用.greenCars
,这是undefined
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.