gpt4 book ai didi

node.js - 我应该如何自动启动我的 nodejs 应用程序进行测试

转载 作者:搜寻专家 更新时间:2023-10-31 22:28:07 28 4
gpt4 key购买 nike

我有一个没有前端的 nodejs Restful 风格服务,它只接受数据然后用它做一些事情。

我已经对我想要的大部分方法级内容进行了单元测试,但是现在我基本上想做一些自动化测试来证明它们可以协同工作。当我使用 ASP.MVC 和 IIS 时,它很容易,因为服务器始终处于打开状态,所以我只是设置场景(将虚拟 guff 插入数据库)然后创建一个 HttpRequest 并将其发送到服务器并断言我得到了我期望的结果.

但是在 nodejs 中存在一些挑战,因为应用程序需要通过命令行或其他一些机制运行,所以假设我有一个将开始监听的 app.js,我有什么方法可以自动启动它在我运行测试之前继续,然后在我的测试完成后关闭它?

我目前正在使用 Yadda 和 Mocha 进行测试,因此我可以以 BDD 风格的方式编写它,但是我希望网络应用程序的启动与我正在使用的框架无关。

最佳答案

只需公开一些方法来启动和停止您的网络服务器。您的 app.js 文件可能是这样的:

var app = express()
var server = null
var port = 3000

// configure your app here...

exports.start = function(cb) {
server = http.createServer(app).listen(port, function () {
console.log('Express server listening on port ' + port)

cb && cb()
})
}

exports.close = function(cb) {
if (server) server.close(cb)
}

// when app.js is launched directly
if (module.id === require.main.id) {
exports.start()
}

然后在你的测试中你可以做这样的事情(基于 mocha 的例子):

var app = require('../app')

before(function(done) {
app.start(done)
})

after(function(done) {
app.close(done)
})

关于node.js - 我应该如何自动启动我的 nodejs 应用程序进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19740763/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com