我是JavaScript,Node.js和jasmine的新手。我正在尝试从“节点工匠书”,FilesizeWatcher这本书中进行测试。我创建了package.json文件并运行“npm install”,从而在本地安装jasmine-node到项目中。当我在spec文件上运行jasmine-node时,我只看到来自console.log的输出,但是没有来自jasmine的输出。我可以从调用jasmine的console.log语句中看到(例如expect(err).toBe(“Path不以斜杠开头”);),但是没有输出。
知道我应该从哪里开始发现错误?
答案 0 :(得分:3)
我知道你指的是什么代码。问题是
watcher.on('grew', function(gain) {
expect(gain).toBe(5);
done();
});
替换为:
watcher.callbacks['grew'] = function(gain) {
expect(gain).toBe(5);
done();
}
问题的核心似乎是测试编写为在不同的代码上运行。从纯JS的角度来看,watcher
对象没有on
"键"因此,通过简单地阅读代码,我不希望它工作。我也是Node的新手,一开始,我只是假设它会起作用。我认为那里的教训是:JS是JS,没有任何节点可以改变它。我在一本名为" Eloquent Javascript"的书中找到了更好的介绍。祝你好运!
答案 1 :(得分:2)
我遇到了同样的问题并发现通过添加开关:
Select p.*,s.*(for all columns) from project p, Student s
inner join p.id=s.id
@Charminbear在上面的评论中提到,jasmine-node在我的脚本中生成了一个错误列表。修复这些解决了这个问题。
答案 2 :(得分:0)
在我意识到一些错误后,我设法让这个工作。
首先,我的代码中仍然有self.callbacks = {};
。我删除了这个。
其次,我还在使用self.callbacks['error']('Path does not start with a slash');
。我将其更改为self.emit('error', 'Path does not start with a slash');
问题解决了(对我而言)。
答案 3 :(得分:0)
我遇到了同样的问题,感谢@John Doherty的回答,我发现了我的问题:
self.callbacks = {};
//...
FilesizeWatcher.prototype.on = function(eventType, callback) {
this.callback[eventType] = callback;
};
这是this.callback
上的错字,应该是this.callbacks
:
FilesizeWatcher.prototype.on = function(eventType, callback) {
this.callbacks[eventType] = callback;
};