测试表达与当地人呈现

时间:2017-06-03 18:33:33

标签: render ejs chai locals

以下是我的示例代码:

档案:index.js

var express = required('express');
var app = express();

app.get("/", function(req, res){
    ...
    ...
    res.render("/index", {
        list: data
    });
});

文件:test.js

var chai = require('chai');
var chaiHttp = require('chai-http');
var server = require('../index');
var should = chai.should();
chai.use(chaiHttp);

describe('Homepage', function(done){
    it('should render index view', function(done){
        chai.request(server.app)
        .get("/")
        .end(function(err, res){
            console.log(res.body);
        });
    });
});

console.log(res.body)将输出显示为{}。如何在输出中显示本地list变量?我想测试这个本地list变量是否在我的test.js文件中有任何数据。

1 个答案:

答案 0 :(得分:0)

选项 1。您应该使用 res.json([body])list 数据发送到您的测试用例。

例如

index.js

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  const data = ['a', 'b'];
  res.json({ list: data });
});

module.exports = { app };

index.test.js

var chai = require('chai');
var chaiHttp = require('chai-http');
var server = require('./index');
var should = chai.should();
chai.use(chaiHttp);

describe('Homepage', function (done) {
  it('should render index view', function (done) {
    chai
      .request(server.app)
      .get('/')
      .end(function (err, res) {
        console.log(res.body);
        done();
      });
  });
});

测试结果:

  Homepage
{ list: [ 'a', 'b' ] }
    ✓ should render index view


  1 passing (28ms)

选项 2。您应该使用 list 数据声明正确呈现的视图。

index.js

var express = require('express');
var path = require('path');
var app = express();

app.set('views', path.resolve(__dirname, './views'));
app.set('view engine', 'ejs');

app.get('/', function (req, res) {
  const data = ['a', 'b'];
  res.render('index', { list: data });
});

module.exports = { app };

views/index.ejs

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <% for (let v of list) { %>
    <p><%= v %></p>
  <% } %>
</body>
</html>

index.test.js

const { expect } = require('chai');
var chai = require('chai');
var chaiHttp = require('chai-http');
var server = require('./index');
var should = chai.should();
chai.use(chaiHttp);

describe('Homepage', function (done) {
  it('should render index view', function (done) {
    chai
      .request(server.app)
      .get('/')
      .end(function (err, res) {
        console.log(res.text);
        done();
      });
  });
});

测试结果:

  Homepage
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
    <p>a</p>
  
    <p>b</p>
  
</body>
</html>
    ✓ should render index view


  1 passing (32ms)