У меня тупое время пытался заставить базовый http-тест работать с обетами.
Я думаю, что я последовал примеру асинхронности из обетов 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 работать самостоятельно. Я могу заставить пример обетов работать самостоятельно, но по какой-то причине не могу их объединить. Я бы очень признателен за помощь здесь. Я пытался заставить это работать некоторое время (в том числе много гуглить).
UPDATE:
Очевидно, что добавление аргумента ошибки к обратному вызову решает эту проблему благодаря помощи Алексис Селлиер (создатель обетов).
Но я понятия не имею, почему. При написании примера http lib самостоятельно аргумент об ошибке не требуется. Я не могу найти никаких документов в клятвах, чтобы указать, почему это необходимо, поэтому я немного растерялся.
Мой новый вопрос: почему аргумент ошибки требуется при использовании http lib в vows?