Jasmine的spyOn toHaveBeenCalled方法的问题

scr*_*key 1 javascript tdd jasmine

任何人都可以告诉我为什么以下测试失败.

var Person = function() {};

Person.prototype.helloSomeone = function(toGreet) {
  return this.sayHello() + " " + toGreet;
};

Person.prototype.sayHello = function() {
  return "Hello";
};

describe("Person", function() {
 it("calls the sayHello() function", function() {
   var fakePerson = new Person();
   spyOn(fakePerson, "sayHello");
   fakePerson.helloSomeone("world");
   expect(fakePerson.sayHello).toHaveBeenCalled();
  });
});
Run Code Online (Sandbox Code Playgroud)

我从这里拿走它,他说它有效.我可以看到spyOn方法在person对象上创建了一个同名的包装函数,即在对象而不是原型上调用fakePerson.sayHello.

非常感谢

scr*_*key 8

测试失败,因为我也使用jasmine-sinon.js.