【发布时间】:2017-09-03 20:54:33
【问题描述】:
我目前正在尝试测试我是否能够在我构建的类中调用某些方法。通过反复试验,我能够让它与班级正确连接,但现在我收到了这个错误:
“错误: : 找不到用于 sayHello() 的对象”
经过研究,我认为这是一个范围问题。我尝试在 spyOn 调用中删除删除 bookTitles,将原型添加到 fakeTitle(及其相应部分),以及在我的主 JS 文件中的类中弄乱方法声明。这些尝试似乎都没有奏效(实际上它实际上有一半时间断开了链接)。为什么 spyOn 方法无法识别 sayHello()?
这是我的代码:
class bookTitle {
helloSomeone(toGreet) {
return this.sayHello() + ' ' + toGreet;
}
sayHello() {
return 'Hello';
}
}
module.exports = {
bookTitle
}
还有我的 Jasmine 文件:
var bookTitles = require ('./bookTitles.js');
describe('bookTitle', function() {
it('calls the sayHello() function', function() {
var fakeTitle = new bookTitles.bookTitle();
spyOn(bookTitles.fakeTitle, 'sayHello');
bookTitles.fakeTitle.helloSomeone('world');
expect(bookTitles.fakeTitle.sayHello).toHaveBeenCalled();
});
});
还有一个附带问题,如果我说 fakeTitle 对象是 bookTitle 类的一部分,那么为什么我需要在 spyOn 方法及以下方法中声明 bookTitles?我的想法是,通过在所需文件的类中说它是一个新对象,那么之后的任何方法调用都不应该自动假定调用应该去的地方吗?
【问题讨论】:
标签: javascript jasmine