使用EJS测试REST API和呈现

时间:2017-03-24 10:54:25

标签: node.js express testing mocha ejs

考虑这种情况:

当您访问我的<input (input)="doSomething($event)" id="date" name="date" type="number"> <span>days</span> 页面时,服务器将使用以下

之类的JSON进行响应
/

为了对此进行测试,我创建了一个文件 home.test.js 并对其进行测试:

res.json({
    message: 'Welcome home.'
});

简单的测试通过,一切都按计划进行。这是问题所在。稍后,当我想使用 ejs呈现视图时,我的代码将更改为:

const chai = require('chai');
const expect = chai.expect;
const chaiHttp = require('chai-http');
const server = require('../server')

chai.use(chaiHttp);

describe('GET /', () => {
    it('should respond with homepage', (done) => {
        chai
            .request(server)
            .get('/')
            .end((err, res) => {
                expect(res.status).to.equal(200);
                expect(res.body.message).to.equal('Welcome home.');
                done();
            });
    });
});

所以现在我之前的测试不会通过,因为 res.render('index', { message: 'Welcome home.' }); 现在将具有值res.body.message。如果响应将为undefined,我怎么能实际测试呢?

1 个答案:

答案 0 :(得分:0)

我认为您可以在呈现页面之前影响到请求正文的消息。您的代码将是这样的:

 res.body.message="Welcome home".
 res.render('index',{message:"welcome home"})