gpt4 book ai didi

node.js - Mocha 测试未达到第二次 Express 回调并返回到第一次

转载 作者:太空宇宙 更新时间:2023-11-03 22:22:24 25 4
gpt4 key购买 nike

我需要以下代码的帮助。我正在测试一个向特定端点发送请求的服务,我需要捕获请求的正文(为此使用 Node 表达)。运行程序经过 Mocha 测试,并且有超过 1 个 it block 。当我调试测试时,首先它 block 按预期工作(断言通过),但是当控制到达第二个它 block 时,一旦发布请求,控制再次返回到第一个 block ,并且第二个 block 中的断言永远不会到达。我在这里做错了什么?

{
var express = require("express");
var bodyPaser = require('body-parser');
var expressObj = new express();
expressObj.use(bodyPaser.json());

describe('describe', function () {
before('describe', function () {
expressObj.listen(8080);
});

it('first It', function (done) {
expressObj.post('/mytest/first', function (req, res) {
res.send("Hello");
// assert.equal(JSON.stringify(req.body), JSON.stringify('first":test'));
done();
});
});

it('second it', function (done) {
expressObj.post('/mytest/first', function (req, res) {
res.send("Hello");
// assert.equal(JSON.stringify(req.body), JSON.stringify('first":test'));
done();
});
});
});

最佳答案

第一个和第二个测试只是设置路由,但您实际上并没有向您所描述的任何一个路由发送请求。因此测试开始,但第一个测试实际上没有执行任何操作,因此永远不会调用完成,这就是第二个测试根本不开始运行的原因。要测试这些路由,您需要在定义它们后为每个路由创建一个请求。这是您的代码的工作演示:

var express = require("express");
var bodyPaser = require('body-parser');
var expressObj = new express();
expressObj.use(bodyPaser.json());
const request = require('request');

describe('describe', function () {
before('describe', function (done) {
expressObj.listen(8080, function(err) {
if(err) {
console.error(err);
done(err);
return;
}

console.log('listening on localhost:8080');
done();
});
});

it('first It', function (done) {
expressObj.post('/mytest/first', function (req, res) {
res.send("Hello");
// assert.equal(JSON.stringify(req.body), JSON.stringify('first":test'));
done();
});
request.post('http://localhost:8080/mytest/first');
});

it('second it', function (done) {
expressObj.post('/mytest/second', function (req, res) {
res.send("Hello");
// assert.equal(JSON.stringify(req.body), JSON.stringify('first":test'));
done();
});

request.post('http://localhost:8080/mytest/second');
});
});

关于node.js - Mocha 测试未达到第二次 Express 回调并返回到第一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52786645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com