在具有超级特性的Nodej上进行测试会给出"无法读取属性'标题'未定义"错误

时间:2018-02-19 12:18:26

标签: javascript node.js express supertest

我是server.js文件,它有我的快递应用程序。 对于测试用法,我可以在下面的测试文件中使用express来运行演示测试,但我不能成功运行我的测试:(

const request = require('supertest');
const express = require('express');

const app = express();

app.get('/user', function(req, res) {
  res.status(200).json({ name: 'tobi' });
});

request(app)
  .get('/user')
  .expect('Content-Type', /json/)
  .expect('Content-Length', '15')
  .expect(200)
  .end(function(err, res) {
    if (err) throw err;
  });

  describe('GET /user', function() {
    it('respond with json', function(done) {
      request(app)
        .get('/user')
        .set('Accept', 'application/json')
        .expect('Content-Type', /json/)
        .expect(200, done);
    });
  });

但是,如果我尝试使用我的应用程序,如下所示:

const server = ('../server');
const request = require("supertest")

describe("Upload Page Test", (done) => {
    describe("(GET /alive) returns webpage ", (done) => {
        it("Is service alive", done => {
            request(server)
                .get("/alive")
                .set('Accept', 'text/html; charset=utf-8')
                .expect('Content-Type', 'text/html; charset=utf-8')
                .expect('Content-Length', '2')
                .end((err, res) => {
                    if (err) console.log("Error "+err);
                    console.log(JSON.stringify(res));
                    done();
                });
        });
    });
});

我收到错误

superagent GET ../server/alive +0ms
Error TypeError: Cannot read property 'header' of undefined
undefined

我的服务器文件的实现就像;

const app = express();
...
...
app.get("/alive", (req, res) => {
  console.log('alive service is running');
  var promise = Provider.find({});
  promise
    .then(providers => {
      console.log('alive service is OK');
      res.send("OK");
    })
    .catch(err => {
      console.log('alive service is FAILED');
      res.send("ERROR");
    });
});

...
...
module.exports = app;

固定。 我没有为服务器编写 reqiure ..:)

1 个答案:

答案 0 :(得分:0)

固定。 reqiure()不适用于服务器...