任何人都可以告訴我爲什麼下面的測試失敗。Jasmine's spyOn toHaveBeenCalled方法問題
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,而不是在原型上調用fakePerson.sayHello。
非常感謝
測試失敗,因爲我也在使用jasmine-sinon.js。不知道爲什麼只有當我刪除它時,測試纔開始。 – screenm0nkey 2012-02-22 15:32:18
嗨screenm0nkey,你可能會感興趣爲什麼我認爲在這種使用情況下使用'toHaveBeenCalled'不是最好的選擇:http://stackoverflow.com/a/16851650/705888 – basecode 2014-04-25 02:58:41