1

这是我的示例代码:

文件: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 文件中是否有任何数据。

4

1 回答 1

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)

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

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)
于 2020-12-26T07:30:18.810 回答