为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣染霜花 2024-01-18 10:46:20
我想为 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 Stylechai.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()            })        })    })})
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

遵循要进行的更改以使 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();

                });

        });

    });

});


查看完整回答
反对 回复 2024-01-18
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

请尝试:


....

.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当您访问未定义的对象属性或方法时,就会发生这种情况。我建议打印回复以获得一些见解。另外,请分享您的路线逻辑。如果没有它,就很难确定错误的根源


查看完整回答
反对 回复 2024-01-18
?
大话西游666

TA贡献1817条经验 获得超14个赞

也许你应该尝试:


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("/")


查看完整回答
反对 回复 2024-01-18
  • 3 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信