【发布时间】:2011-10-28 20:16:10
【问题描述】:
我有一个快递服务器,我正在使用 vows 进行测试。我想从 vows 测试套件中运行服务器,这样我就不需要让它在后台运行以使测试套件工作,然后我可以创建一个运行服务器并对其进行测试的蛋糕任务隔离。
在server.coffee 中,我创建了(快速)服务器,对其进行了配置,设置了路由并调用了 app.listen(port),如下所示:
# Express - setup
express = require 'express'
app = module.exports = express.createServer()
# Express - configure and set up routes
app.configure ->
app.set 'views', etc....
....
# Express - start
app.listen 3030
在我简单的routes-test.js 中,我有:
vows = require('vows'),
assert = require('assert'),
server = require('../app/server/server');
// Create a Test Suite
vows.describe('routes').addBatch({
'GET /' : respondsWith(200),
'GET /401' : respondsWith(401),
'GET /403' : respondsWith(403),
'GET /404' : respondsWith(404),
'GET /500' : respondsWith(500),
'GET /501' : respondsWith(501)
}).export(module);
respondsWith(code) 在功能上与誓言文档中的相似...
当我在上述测试中require 服务器时,它会自动开始运行服务器并且测试运行并通过,这很好,但我不觉得我这样做是“正确”的方式。
我无法控制服务器何时启动,如果我想将服务器配置为指向“测试”环境而不是默认环境,或者更改我测试时的默认日志记录级别,会发生什么?
PS 我要将我的誓言转换为 Coffeescript,但现在它全部在 js 中,因为我正处于从文档中学习的模式!
【问题讨论】:
-
您可能想看看Pact - 它用于使用 Vows 测试 HTTP 服务器。
-
感谢 Skilldrick,将检查 Pact!
标签: testing node.js coffeescript express vows