测试函数是否使用.call()

时间:2015-01-13 22:07:45

标签: javascript jasmine

我正在尝试编写一个测试,检查构造函数是否在另一个函数上使用了.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()?

0 个答案:

没有答案