如何使用 supertest 和 mocha 测试快速渲染

Iva*_*lic 6 mocha.js node.js express supertest

我今天想开始测试快速路线,但我可以弄清楚如何测试渲染翡翠视图。

这是我的代码:

路线:

  router.get('/', function(req: any, res: any) {
    res.render('index', { title: 'Express' });
  });
Run Code Online (Sandbox Code Playgroud)

测试:

 describe('GET / ', () => {
   it('renders index', (done) => {
     request(router)
       .get('/')
       .render('index', { title: 'Express' })
       .expect(200, done);
   });
 });
Run Code Online (Sandbox Code Playgroud)

当然.render会导致错误。我应该如何测试渲染?

sma*_*ell -1

您可能需要在测试中配置渲染引擎。检查响应body中是否有类似的内容Error: No default engine was specified and no extension was provided.

我能够使用:

// Setup Fake rendering
beforeEach(() => {
  app.set('views', '/path/to/your/views');
  app.set('view engine', 'ext');
  app.engine('ext', (path, options, callback) => {
    const details = Object.assign({ path, }, options);
    callback(null, JSON.stringify(details));
  });
}

it('your awesome test', async () => {
  const res = await agent.get('/route').type('text/html');

  // This will have your response as json
  expect(res.text).to.be.defined;
});
Run Code Online (Sandbox Code Playgroud)