我正在尝试编写一个测试,检查构造函数是否在另一个函数上使用了.call()函数。这是一个例子:
要测试的代码:
function Mammal(name, color) {
this.name = name;
this.color = color;
};
Mammal.prototype.beep = function() {
return "Arf, Arf"
};
Mammal.prototype.changeColor = function() {
this.color = "brown"
};
// TEST IF MAMMAL.CALL WAS USED IN THE DOG CONSTRUCTOR
function Dog(name, color){
Mammal.call(this,name, color);
}
当前测试(不能正常工作:
describe("Dog Class", function(){
beforeEach(function(){
dog = new Dog("Stewie", "Red");
});
it("should have a Name and Mammal color in its constructor", function(){
expect(dog.color).toEqual("Red");
expect(truck.name).toEqual("Stewie");
});
it("should be called with the Mammal Constructor", function(){
var test = spyOn(window, "Mammal").andCallThrough();
expect(test.wasCalled).toEqual(true);
});
});
我已经提到了这个post和类似的帖子,但是其中许多提供了使用Object Literals上的方法调用来设置测试的示例。 “.call”将是Function对象的Function。
我的当前测试不会将wasCalled属性更改为“true”,即使在Dog构造函数中调用了Mammal.call()。如何设置我的测试以检查在Dog Constructor中是否使用了Mammal.call()?