我有一段时间试图让一个基本的 http 测试与 vows 一起工作。
我想我已经遵循了 vows http://vowsjs.org/#-writing-asynchronous-tests中的异步示例并替换了适当的调用,但我必须遗漏一些东西。
测试代码如下所示:
var http = require('http'),
vows = require('vows'),
assert = require('assert');
vows.describe("homepage").addBatch({
"Get the home page": {
topic: function() {
http.get({'host': "127.0.0.1", 'port': 5000, 'path': '/'}, this.callback);
},
'should respond with 200 OK': function(res) {
assert.equal(res.statusCode, 200);
}
}
}).export(module);
当我尝试为此运行测试时出现以下错误:
/Users/<home_folder>/node_modules/vows/lib/vows.js:80
rrored', { type: 'promise', error: err.stack || err.message || JSON.stringify(
^
TypeError: Converting circular structure to JSON
at Object.stringify (native)
at EventEmitter.<anonymous> (/Users/<home_folder>/node_modules/vows/lib/vows.js:80:90)
at EventEmitter.emit (events.js:64:17)
at /Users/<home_folder>/node_modules/vows/lib/vows/context.js:31:52
at ClientRequest.<anonymous> (/Users/<home_folder>/node_modules/vows/lib/vows/context.js:46:29)
at ClientRequest.g (events.js:143:14)
at ClientRequest.emit (events.js:64:17)
at HTTPParser.onIncoming (http.js:1349:9)
at HTTPParser.onHeadersComplete (http.js:108:31)
at Socket.ondata (http.js:1226:22)
我可以得到一个简单的 http 示例来独立工作。我可以让誓言示例自行工作,但无论出于何种原因,我都无法将它们结合起来。我真的很感激这里的一些帮助。我一直试图让它工作一段时间(包括很多谷歌搜索)。
更新:
显然,感谢 Alexis Sellier(誓言的创建者)的帮助,在回调中添加错误参数解决了这个问题。
但我不知道为什么。当自己写出 http lib 示例时,不需要错误参数。我在誓言中找不到任何文件来说明为什么需要它,所以我有点茫然。
我的新问题是为什么在 vows 中使用 http lib 时需要错误参数?