Ответ 1
Моя презумпция заключается в том, что Nock отвечает application/json
как тип mime, так как вы отвечаете {yes: 'it works'}
. Посмотрите res.body
в суперагенте. Если это не сработает, сообщите мне, и я присмотрюсь ближе.
Edit:
Попробуйте следующее:
var agent = require('superagent');
var nock = require('nock');
nock('http://localhost')
.get('/testapi.html')
.reply(200, {yes: 'it works !'}, {'Content-Type': 'application/json'}); //<-- notice the mime type?
agent
.get('http://localhost/testapi.html')
.end(function(res){
console.log(res.text) //can use res.body if you wish
});
или...
var agent = require('superagent');
var nock = require('nock');
nock('http://localhost')
.get('/testapi.html')
.reply(200, {yes: 'it works !'});
agent
.get('http://localhost/testapi.html')
.buffer() //<--- notice the buffering call?
.end(function(res){
console.log(res.text)
});
Теперь один из них работает. Здесь я верю, что это происходит. nock не устанавливает тип mime, и предполагается значение по умолчанию. Я предполагаю, что значение по умолчанию application/octet-stream
. Если это случай, суперагент затем не буферизует ответ для сохранения памяти. Вы должны заставить его его буферировать. Поэтому, если вы укажете тип mime, который должен иметь ваш HTTP-сервис, суперагент знает, что делать с application/json
и почему, если вы можете использовать либо res.text
, либо res.body
(проанализированный JSON).