猿问

Mocha 单元测试:未捕获类型错误:无法读取未定义的属性“应用”

我想为 Restful Endpoint 编写单元测试,但每当我运行 npm test 时。我收到错误 Uncaught TypeError: Cannot read property 'apply' of undefined 。


let chai = require('chai')

let chaiHttp = require('chai-http')

let home = require('../routes/home')

let user = require('../routes/users')

//Assertion Style

chai.should()


chai.use(chaiHttp)


describe('chow Api', () => {

  //  users

    describe("GET /api/chow/home", () => {

        it('it should render Welcome to Homepage', (done) =>{

            chai.request(home)

            .get("/api/chow/home")

            .end((err, response) =>{

                response.should.have.status(200)

                response.body.should.be('string')

                done()

            })

        })

    })


    describe('GET /api/chow/users', () => {

        it('it should GET all the users', (done) => {

            chai.request(user)

            .get("/api/chow/users")

            .end((err, response) =>{

                response.should.have.status(200)

                response.should.be.a('array')

                done()

            })

        })

    })

})


白衣染霜花
浏览 116回答 3
3回答

函数式编程

遵循要进行的更改以使 Mocha 测试正常工作在 中index.js,您应该添加此行module.exports = app;以便服务器启动。const express = require("express");const app = express();const homeController = require("./routes/home");app.use("/home", homeController);const port = process.env.PORT || 5000;app.listen(port, () => {    console.log("Server started at port", port);});module.exports = app;在 中test/routes/home.js,您应该添加.get("/home")和res.text.should.equal("Hello World!"); 来通过/home端点的Mocha 测试const chai = require("chai");const chaiHTTP = require("chai-http");const mainEntryPoint = require("../../index");chai.should();chai.use(chaiHTTP);describe("Entry point", () => {    context("GET /", () => {        it("should get greeting back", (done) => {            chai.request(mainEntryPoint)                .get("/home")                .end((err, res) => {                    if (err) throw err;                    res.text.should.equal("Hello World!");                    done();                });        });    });});

幕布斯7119047

请尝试:.....get("/") // This should be a relative path from current route.end((err, response) =>{    if(err) return done(err)    response.should.have.status(200)    response.body.should.be('string')    done()});如果没有看到路线代码,我不能百分百确定。但是,TypeError: cannot do whatever with undefined当您访问未定义的对象属性或方法时,就会发生这种情况。我建议打印回复以获得一些见解。另外,请分享您的路线逻辑。如果没有它,就很难确定错误的根源

大话西游666

也许你应该尝试:const app = require("./app.js")chai.request(app).get("/api/chow/users")chai.request(app).get("/api/chow/users")或者chai.request(home).get("/")chai.request(user).get("/")
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答