Подтвердить что ты не робот

Node.js: Mock HTTP-запрос и ответ

Есть ли удобный способ издеваться над объектами HTTP-запроса и ответа для сред тестирования модулей?

4b9b3361

Ответ 2

Из тега, похоже, этот вопрос касается Express. В этом случае supertest очень хорошо:

var request = require('supertest')
  , express = require('express');

var app = express();

app.get('/user', function(req, res){
  res.send(201, { name: 'tobi' });
});

request(app)
  .get('/user')
  .expect('Content-Type', /json/)
  .expect('Content-Length', '20')
  .expect(201)
  .end(function(err, res){
    if (err) throw err;
  });

Для общего использования Node Flatiron Nock выглядит неплохо:

var nock = require('nock');
var example = nock('http://example.com')
                .get('/foo')
                .reply(200, { foo: 'bar' });

var http = require('http');
var options = {
  host: 'example.com',
  port: 80,
  path: '/foo',
  method: 'GET'
}
var req = http.request(options, function(res) {
  res.on('data', function(chunk) {
    console.log('BODY: ' + chunk);
  });
});

req.on('error', function(e) {
  console.log('error: ' + e);
});

req.end();

Вывод:

BODY: { "foo": "bar" }

Ответ 4

Я написал библиотеку для измельчения ответов запросов, сделанных через стандартный HTTP или через модель запроса:

https://github.com/ctide/fakeweb

Ответ 5

Отъезд https://github.com/timsavery/node-hmock или npm install hmock... любая обратная связь приветствуется! Решение для меня хорошо работало до сих пор.

Ответ 6

Mockery отлично подходит для этого.

По сути, он захватывает вызовы require и возвращает отдельный объект-заглушка объекта/функции.

Ответ 7

Я рекомендую вам использовать motty. зачем нам нужен другой код?