Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.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 使用karma jasmine测试规范内的对象属性更改_Javascript_Unit Testing_Jasmine - Fatal编程技术网

Javascript 使用karma jasmine测试规范内的对象属性更改

Javascript 使用karma jasmine测试规范内的对象属性更改,javascript,unit-testing,jasmine,Javascript,Unit Testing,Jasmine,我试图测试一个简单的对象,并跟踪它自己的属性被它自己的方法改变。在启动方法后,属性的值不会发生变化: 它是“用新属性扩展对象”的函数{ var newCar=Object.createcar; newCar.climatronicOn=false; newCar.startClimatronic=功能{ newCar.climatronicOn=true; } newCar.stopClimatronic=功能{ newCar.climatronicOn=false; } spyOnnewCa

我试图测试一个简单的对象,并跟踪它自己的属性被它自己的方法改变。在启动方法后,属性的值不会发生变化:

它是“用新属性扩展对象”的函数{ var newCar=Object.createcar; newCar.climatronicOn=false; newCar.startClimatronic=功能{ newCar.climatronicOn=true; } newCar.stopClimatronic=功能{ newCar.climatronicOn=false; } spyOnnewCar,“startClimatronic”; spyOnnewCar,“stopClimatronic”; //性质 expectnewCar.hasOwnPropertyclimatronicOn.ToBetruty; newCar.climatronicOn.toEqualboolean的预期类型; //方法 expectnewCar.hasOwnPropertystartClimatronic.toBeTruthy; expecttypeofnewcar.startClimatronic.toEqualfunction; expectnewCar.hasOwnPropertystopClimatronic.toBeTruthy; expecttypeofnewcar.stopClimatronic.toEqualfunction; //运行方法 newCar.startClimatronic;//应将newCar.Climatronic更改为true expectnewCar.startClimatronic.To已装入;//true expectnewCar.climatronicOn.toBeTruthy;//false,我期望true }; 当你观察一个函数,例如startClimatronic,然后你调用这个函数。newCar.startClimatronic;您不是在调用它的实际实现,而是一个存根的jasmine。因此,为了使您的测试成功,您需要调用.and.callThrough;关于间谍。差不多

spyOn(newCar, 'startClimatronic').and.callThrough();
spyOn(newCar, 'stopClimatronic').and.callThrough();
因此,运行您的测试取得了圆满成功


希望它有帮助

像一个魔咒一样工作,尽管我已经在玩弄callThrough方法,但不知何故,我以前无法让它工作。。。可能还有其他问题。非常感谢。