Javascript 无法读取属性';应用';在chai中进行单元测试时未定义的

Javascript 无法读取属性';应用';在chai中进行单元测试时未定义的,javascript,express,mocha.js,chai,Javascript,Express,Mocha.js,Chai,尝试测试一个简单的快速rest,我得到了 index.js import chai from 'chai'; import chaiHttp from 'chai-http'; import router from '../routes/'; chai.use(chaiHttp); chai.should(); const expect = chai.expect(); describe('index page should render, hello world', () => {

尝试测试一个简单的快速rest,我得到了

index.js

import chai from 'chai';
import chaiHttp from 'chai-http';
import router from '../routes/';

chai.use(chaiHttp);
chai.should();

const expect = chai.expect();

describe('index page should render, hello world', () => {
    it('should render hello world 200', (done) => {     
        chai.request(router).get('/').end( (err, res) => {   
            expect(200, "ok").
            expect(res.text).to.equal('Hello World');

            done();
        })    
    })
})
import express from 'express';

const router = express.Router();

router.get('/', (req, res) => {
    return res.status(200).json({
        message: "Hello World"
    })
})




export default router;
.babelrc

{
    "presets": ["@babel/preset-env"]  
}
package.json

{
  "name": "elinodereactapp",
  "version": "1.0.0",
  "description": "",
  "scripts": {
    "start": "nodemon --exec babel-node ./app.js",
    "test": "mocha --require @babel/register tests/*.js --exit",
    "build": "babel src --out-dir ./dist --source-maps",
    "serve": "node ./app.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "assert": "^1.4.1",
    "body-parser": "^1.18.3",
    "chai-http": "^4.2.1",
    "cookie-parser": "^1.4.4",
    "cors": "^2.8.5",
    "dotenv": "^7.0.0",
    "express": "^4.16.4",
    "morgan": "^1.9.1",
    "node-mocks-http": "^1.7.3"
  },
  "devDependencies": {
    "@babel/cli": "^7.4.3",
    "@babel/core": "^7.4.3",
    "@babel/node": "^7.2.2",
    "@babel/preset-env": "^7.4.3",
    "@babel/register": "^7.4.0",
    "babel-cli": "^6.26.0",
    "babel-core": "^7.0.0-bridge.0",
    "babel-loader": "^8.0.5",
    "babel-preset-env": "^1.7.0",
    "chai": "^4.2.0",
    "mocha": "^6.1.1",
    "nodemon": "^1.18.10"
  }
}

您需要使用
res.body.message
而不是
res.message

describe('index page should render, hello world', () => {
it('should render hello world 200', (done) => {     
    chai.request(router).get('/').then((res)=>{
                expect(res.body.message).to.equal("Hello World");
                expect(res).to.have.status(200);
                done();
            })
    })    
})

res.text
对我来说似乎可疑;你的意思是
expect(res.to.be.text
还是
expect(res.to.equal)(…)
?即使删除
expect(res.text).to.equal('Hello World')我仍然无法读取属性'apply',显然它是
expect(res).to.have.status(200)我仍然得到'Uncaught TypeError:Cannot read property'apply'of undefined'可能是babel的设置方式让我展示ui仍然得到'Uncaught TypeError:Cannot read property'apply'of undefined'我认为这与babel有关。我认为这是一个巴别塔问题,无法识别es6。我认为这个答案确实有效,只是可能是摩卡咖啡的问题。这可能是真的,因为我从来没有犯过这个奇怪的错误。尝试删除babel并使用本机版本使用此选项?
describe('index page should render, hello world', () => {
it('should render hello world 200', (done) => {     
    chai.request(router).get('/').then((res)=>{
                expect(res.body.message).to.equal("Hello World");
                expect(res).to.have.status(200);
                done();
            })
    })    
})