Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript Jasmine测试失败_Javascript_Unit Testing_Testing_Jasmine - Fatal编程技术网

JavaScript Jasmine测试失败

JavaScript Jasmine测试失败,javascript,unit-testing,testing,jasmine,Javascript,Unit Testing,Testing,Jasmine,我有这个特定的JavaScript代码 function hideGreenCarsFromView(greenCar) { if (greenCar) { var car = parkingCarTools.getContainerOfgreenCar(greenCar, sr.pageModel.garageData.cars); if (car &

我有这个特定的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)失败

我明白了

非对象中的“未定义”(评估“car.greenCars”)

错误


我做错了什么?这是我第一次做茉莉花测试,我有点迷路了,提前谢谢

在测试顶部,将
myGreenCars
设置为
undefined
,然后传入。它经过了一些我们看不到的代码,最终被传递到
hideGreenCarsFromView
,我假设仍然是
未定义的


if(greenCar)
的计算结果为false,因此它跳过
car
的初始化,然后点击下一个
if
语句并调用
.greenCars
on
car
,该语句在测试顶部是
未定义的
,您将
myGreenCars
设置为
undefined
,然后传入。它经过了一些我们看不到的代码,最终被传递到
hideGreenCarsFromView
,我假设仍然是
未定义的


if(greenCar)
的计算结果为false,因此它跳过
car
的初始化,然后点击下一个
if
语句并调用
.greenCars
on
car
,这是
未定义的

如果(car.greenCars&&car.greenCars.length==0),我无法模拟下面的代码行如果(car.greenCars&&car.greenCars.length==0)我无法模拟以下代码行如果(car.greenCars&&car.greenCars.length==0)我不知道如何模拟这行代码如果(car.greenCars&&car.greenCars.length==0)我不知道如何模拟这行代码