我有一个自定义节点服务器并将其作为对象传递给某些测试。这是我的Gruntfile:
match 'questions/:id' => redirect { |params, req|
id = params[:id]
slug = Question.find_by_id(params[:id].to_i).slug
'/questions/' + id + '/' + slug
}
如何在我的测试中使用我在Gruntfile中创建的变量?还有其他方法可以将内容传递给我的测试吗?
答案 0 :(得分:1)
来自mocha docs:
- 全局
接受以逗号分隔的已接受全局变量名称列表。例如,假设您的应用故意公开全局命名应用和YUI,您可能想要添加--globals app,YUI。它也接受通配符。你可以做--globals' bar'它会匹配foobar,barbar等。你也可以简单地传入' '忽略所有全局变量。
简而言之,globals选项用于告诉mocha忽略某些全局变量,而不是在测试中公开这些变量。
如果你想用mocha测试一个模块,你应该只在测试中require
(或测试助手)。
像supertest这样的框架将包装HTTPServer,并允许您非常好地测试端点。我创建了一个简短的example,展示了如何使用supertest和mocha来测试一个简单的HTTPServer应用程序。相关代码如下:
// index.js
var http = require('http');
module.exports = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
// server-test.js
var server = require('./index.js');
var supertest = require('supertest');
var app = supertest(app);
describe('server', function () {
it('responds with a welcoming message', function (done) {
app.get('/')
.expect(200, /Hello World/, done);
});
});