如何在Node.js RESTful应用程序中进行集成测试?

时间:2011-08-30 19:08:02

标签: node.js integration-testing

鉴于现有的Node.js应用程序实现了具有JSON格式的RESTful API,在Node.js中编写集成测试套件有什么好的选择?

此套件应执行测试方案,通常包括将数据库设置为已知状态(可能通过POST请求)并运行一系列涉及GET,POST,PUT和DELETE请求的测试,检查返回的状态代码和响应

1 个答案:

答案 0 :(得分:4)

单元测试框架有几个选项。

我将展示expresso& amp;愿。

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()
});
誓言是一个在誓言之上的薄抽象,以便更容易测试。

然而,誓言正处于积极发展阶段,因此请自担风险。