如何解决如何使用 chai 和 mocha 在 HTTP 单元测试期间使正在调用的方法静音
我正在测试将校车添加到学校的路线。这是我的测试模块,
const chai = require("chai");
const chaiHTTP = require("chai-http");
const proxyquire = require("proxyquire");
const sinon = require("sinon");
const schoolBus = require("../../routes/schoolBus");
// Assertion style
chai.should();
chai.use(chaiHTTP);
let verifyToken;
// Transport Route test
describe("Transport Route",() => {
const verifyStub = function () {
return sinon.stub();
};
before(function () {
verifyToken = proxyquire("../../routes/schoolBus",{
verifyTokenPrincipalVicePrincipal: verifyStub,});
});
context("POST /add",() => {
it("should add a school bus with validation information",() => {
const bus = {
name: "Alpha",route: "B/A",driverName: "Mike",driverPhone: "123456",price: 10,};
chai.request(schoolBus)
.post("/add")
.send(bus)
.end((err,response) => {
// response.should.have.status(200);
response.body.should.have.property("_id");
// response.body.should.have.property("name").eq("Alpha");
done();
});
});
});
});
我在这里所做的是,我试图伪造一个模块 verifyToken
,它在 verifyTokenPrincipalVicePrincipal
模块中有一个显式导入的方法 schoolBus
。此方法检查请求标头中的身份验证令牌。
这才是我真正需要做的。如果从实际模块中删除此方法并且模块是正常需要的(没有 proxyquire
),我已经检查过测试是否通过。
这是模块的路线,
router.post("/add",verifyTokenPrincipalVicePrincipal,async (req,res) => {
try {
// Validates request with Joi
await schoolBusAddValidation(req.body);
const bus = new Bus({
name: req.body.name,route: req.body.route,driverName: req.body.driverName,driverPhone: req.body.driverPhone,price: req.body.price,});
await bus.save();
res.send(bus);
} catch (err) {
res.status(400).send({ message: err.details[0].message });
}
});
请帮我提供一个全面的答案,并给我一些关于使用 Chai 和 Mocha 测试 HTTP 请求的好资源,详细讨论。
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。