如何测试呈现视图的Express Routes

时间:2014-03-11 12:57:33

标签: javascript node.js express supertest

我试图用SuperTest测试一些Express Routes有点困难。

// Mocha test
  ..
  request(app)
    .get('/user')
    .expect(200)
    .end(function(err, res){
      if (err) return done(err);
     done()
  });
  ...

// Router 
  app.get('/user', function(req, res){
    res.render('user.jade');
  });

当我使用浏览器手动测试路由器时,路由器工作正常,并呈现玉器模板视图,但是当我运行mocha测试时,它失败,并且“未捕获预期的错误为真”。 Express将请求记录为成功(200),但测试仍显示为失败并显示错误消息。

我曾尝试为SuperTest段使用不同的代码习惯用法,不同的jade模板,它似乎只在我第一次在呈现模板的路由器上运行测试时出现。即使在相同的路由器和模板上使用GET进行测试也会成功???

尝试使用路由器查找代码示例但是没有成功呈现视图,所以这可能是不受支持的情况?

1 个答案:

答案 0 :(得分:-3)

var request = require('supertest');
var app = require('../server').app;
var jade = require('jade');
var should = require('should');
// ...

it('return user template', function(done){
  request(app)
    .get('/')
    .end(function(err, res){
      var html = jade.renderFile('./pathToJadeFile/user.jade');
      res.text.should.equal(html);
      done();
    });
});