node.js: фиктивный http запрос и ответ - PullRequest
34 голосов
/ 05 ноября 2011

Есть ли удобный способ макетировать объекты HTTP Request и Response для промежуточного программного обеспечения модульного тестирования?

Ответы [ 7 ]

25 голосов
/ 25 февраля 2013

Похоже, что https://github.com/howardabrams/node-mocks-http и https://github.com/vojtajina/node-mocks могут использоваться для создания фиктивных http.ServerRequest и http.ServerResponse объектов.

7 голосов
/ 30 августа 2013

Судя по тегу, этот вопрос касается экспресса.В этом случае 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;
  });

Для общего использования узла 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();

Вывод:

ТЕЛО: {"foo": "bar"}

1 голос
/ 06 ноября 2011

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

https://github.com/ctide/fakeweb

1 голос
/ 05 ноября 2011

Я использую нодзюцу макет:

https://github.com/nodejitsu/mock-request

Возможно, это то, что вы ищете.

0 голосов
/ 08 декабря 2017

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

0 голосов
/ 07 ноября 2014

Насмешка отлично подходит для этого.

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

0 голосов
/ 28 января 2014

Проверьте https://github.com/timsavery/node-hmock или npm install hmock ... любые отзывы приветствуются!Пока это решение хорошо сработало.

...