Javascript 使用karma jasmine测试规范内的对象属性更改
我试图测试一个简单的对象,并跟踪它自己的属性被它自己的方法改变。在启动方法后,属性的值不会发生变化: 它是“用新属性扩展对象”的函数{ 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;关于间谍。差不多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
spyOn(newCar, 'startClimatronic').and.callThrough();
spyOn(newCar, 'stopClimatronic').and.callThrough();
因此,运行您的测试取得了圆满成功
希望它有帮助像一个魔咒一样工作,尽管我已经在玩弄callThrough方法,但不知何故,我以前无法让它工作。。。可能还有其他问题。非常感谢。