如何将对象传递给Mocha测试

时间:2015-06-07 23:18:58

标签: javascript node.js gruntjs mocha

我有一个自定义节点服务器并将其作为对象传递给某些测试。这是我的Gruntfile:

 match 'questions/:id' => redirect { |params, req|
   id = params[:id]
   slug = Question.find_by_id(params[:id].to_i).slug
   '/questions/' + id + '/' + slug
 }

如何在我的测试中使用我在Gruntfile中创建的变量?还有其他方法可以将内容传递给我的测试吗?

1 个答案:

答案 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);
  });
});