Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用mocha和chai测试mongodb数据库?_Node.js_Mongodb_Express_Mongoose_Mocha.js - Fatal编程技术网

Node.js 如何使用mocha和chai测试mongodb数据库?

Node.js 如何使用mocha和chai测试mongodb数据库?,node.js,mongodb,express,mongoose,mocha.js,Node.js,Mongodb,Express,Mongoose,Mocha.js,我试图测试通过mongoose与mongodb数据库交互的api路由。我的测试工具是chai和mocha。每次测试都会因为超时错误而失败 错误:超过2000毫秒的超时时间。对于异步测试和挂钩,确保调用“done()”;如果返回承诺,请确保它已解决 正确调用路由,同时调用函数findUserById。但是,我注意到在服务器连接到mongodb之前调用了findUserById 如何解决这个问题 以下是应用程序文件: require(“dotenv”).config(); 从“快递”导入快递; 从

我试图测试通过mongoose与mongodb数据库交互的api路由。我的测试工具是chai和mocha。每次测试都会因为超时错误而失败

错误:超过2000毫秒的超时时间。对于异步测试和挂钩,确保调用“done()”;如果返回承诺,请确保它已解决

正确调用路由,同时调用函数
findUserById
。但是,我注意到在服务器连接到mongodb之前调用了
findUserById

如何解决这个问题

以下是应用程序文件:

require(“dotenv”).config();
从“快递”导入快递;
从“body parser”导入bodyParser;
从“压缩”导入压缩;
从“cookie解析器”导入cookieParser;
进口税率限制来自“快递税率限制”;
从“cors”导入cors;
从“http”导入{createServer};
从“socket.io”导入{Server};
从“/routers/search”导入searchRouter;
从“/controllers/socket”导入{socketcontroller};
//服务器
export const app=express();
const server=createServer(应用程序);
const io=新服务器(服务器);
//中间件
use(cors({credentials:true,origin:[process.env.CLIENT as string]});
use(bodyParser.urlencoded({extended:true}));
use(bodyParser.json());
app.use(compression());
使用(cookieParser());
应用程序使用(速率限制({max:100}));//将每个IP限制为每分钟20个请求
socketcontroller.manageEvents(io);
//路由器
应用程序使用(搜索路由器);
app.locals.io=io;
//开始
connectToDatabase()
.然后(()=>
侦听(process.env.PORT,()=>
log(`server正在侦听${process.env.PORT}!`)
)
)
.catch((err)=>console.log(“error”,err))我们就是这样做的:

首先,我们像您在
connectToDatabase()
中那样创建了db连接,然后我们在
之前为测试创建了一个
钩子:

before(async () => {
   await connectToDatabase();
   //... any other setup code that needs to occur
});

这可确保在运行测试之前发生db连接。

问题在于无法读取process.env.MONGODB。我需要添加require(“dotenv”).config();位于connectToDatabase.ts文件的顶部