Как провести интеграционное тестирование в приложении Noje.js RESTful?

Учитывая существующее приложение Node.js, которое реализует RESTful API с форматом JSON, какие были бы хорошие варианты для написания пакета интеграционного тестирования в Node.js?

Этот набор должен выполнять тестовые сценарии, которые обычно состоят из установки базы данных в известное состояние (возможно, с помощью запросов POST) и выполнения серии тестов, включающих запросы GET, POST, PUT и DELETE, проверку возвращенных кодов состояния и ответов.


person Fernando Correia    schedule 30.08.2011    source источник
comment
Я нашел похожий вопрос: stackoverflow .com/questions/7127226/   -  person Fernando Correia    schedule 31.08.2011


Ответы (1)


Существует несколько вариантов фреймворков модульного тестирования.

Я покажу примеры с экспрессо и обетами.

var assert = require('assert'),
    http = require('http'),
    server = getServer(); // get an instance of the HTTPServer

assert.response(server, {
    'url': '/'
}, {
    'body': "test body",
    'status': "200"
});

И пример с vows-is

var is = require("vows-is");

is.config({
    server: {
        "factory": createServer,
        "kill": destroyServer,
        "uri": "http://localhost:4000"
    }
})

is.suite("integration tests").batch()

    .context("a request to GET /")
    .topic.is.a.request("GET /")
    .vow.it.should.have.status(200)
    .vow.it.should.have
        .header("content-type", "text/html; charset=utf-8")
    .context("contains a body that")
        .topic.is.property('body')
        .vow.it.should.be.ok
        .vow.it.should.include.string("hello world")

.suite().run({
    reporter: is.reporter
}, function() {
    is.end()
});

vows-is — это тонкая абстракция поверх vows, упрощающая тестирование.

Однако vows-is находится в активной разработке, поэтому используйте его на свой страх и риск.

person Raynos    schedule 30.08.2011
comment
Мне удалось реализовать интеграционный тест с помощью vows -есть и работает хорошо. Спасибо. - person Fernando Correia; 01.09.2011
comment
не забывайте Jasmine/Jasmine-node! - person Quang Van; 11.11.2011
comment
Ссылка на vows-is(github.com/Raynos/vows-is) не работает, может не найти репо. - person bithavoc; 05.05.2014
comment
vows-это была ошибка, она была удалена. - person Raynos; 08.05.2014