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

发布于 2024-12-02 07:28:33 字数 180 浏览 0 评论 0原文

给定一个使用 JSON 格式实现 RESTful API 的现有 Node.js 应用程序,在 Node.js 中编写集成测试套件的好选择是什么?

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

Given an existing Node.js application that implements a RESTful API with JSON format, what would be good options for writing an integration testing suite in Node.js?

This suite should execute test scenarios that would typically consist of setting a database to a known state (possibly through POST requests) and running a series of tests involving GET, POST, PUT and DELETE requests, checking for returned status codes and responses.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝咒 2024-12-09 07:28:33

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

我将展示 Expresso 和 NodeUnit 的示例。誓言。

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-is 正在积极开发中,因此使用风险需您自担。

There are a few options for unit testing frameworks.

I'll show examples with expresso & vows.

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

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

And an example with 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 is a thin abstraction on top of vows to make it easier to test with.

However vows-is is under active development so use at your own risk.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文