【发布时间】:2012-02-22 14:16:50
【问题描述】:
谁能告诉我为什么下面的测试失败了。
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();
});
});
我从here 那里拿到它,他说它有效。我可以看到 spyOn 方法正在 person 对象上创建一个同名的包装函数,即在对象而不是原型上调用 fakePerson.sayHello。
非常感谢
【问题讨论】:
-
测试失败,因为我也在使用 jasmine-sinon.js。不知道为什么,但是一旦我删除它,测试就会工作。
-
嗨 screenm0nkey,您可能会感兴趣,为什么我认为在这个用例中使用
toHaveBeenCalled不是最佳选择:stackoverflow.com/a/16851650/705888
标签: javascript tdd jasmine