Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 摩卡异步测试超时_Node.js_Unit Testing_Mocha.js - Fatal编程技术网

Node.js 摩卡异步测试超时

Node.js 摩卡异步测试超时,node.js,unit-testing,mocha.js,Node.js,Unit Testing,Mocha.js,嗨,我是新的测试与摩卡更不用说异步测试。运行此测试时,我不断遇到以下错误。我花了很多时间在网上研究解决方案,但运气不好 错误:超过2000毫秒的超时时间。对于异步测试和挂钩,确保调用“done()”;如果返回承诺,请确保它已解决 it('Should fail to create new user due to missing email', (done) => { const user_empty_email = { name: "First Name", email

嗨,我是新的测试与摩卡更不用说异步测试。运行此测试时,我不断遇到以下错误。我花了很多时间在网上研究解决方案,但运气不好

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

it('Should fail to create new user due to missing email', (done) => {
  const user_empty_email = {
    name: "First Name",
    email: "",
    password: "password",
    isAdmin: false
  }
  chai.request(app).post('/v1/users')
    .send(user_empty_email)
    .then((res) => {
      expect(res).to.have.status(400);
      done();
    }).catch(done)
})
下面是我从/v1/users得到的一个示例响应

{
  "user": {
      "_id": "5de4293d3501dc21d2c5293c",
      "name": "Test Person",
      "email": "testemail@gmail.com",
      "password": "$2a$08$8us1C.thHWsvFw3IRX6o.usskMasZVAyrmccTNBjxpNQ8wrhlBt6q",
      "isAdmin": false,
      "tokens": [
          {
              "_id": "5de4293d3501dc21d2c5293d",
              "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZGU0MjkzZDM1MDFkYzIxZDJjNTI5M2MiLCJpYXQiOjE1NzUyMzM4NTN9.mi4YyYcHCvdYrl7OuI5eDwJ8xQyKWDcqgKsXRYtn0kw"
          }
      ],
      "__v": 1
  },
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZGU0MjkzZDM1MDFkYzIxZDJjNTI5M2MiLCJpYXQiOjE1NzUyMzM4NTN9.mi4YyYcHCvdYrl7OuI5eDwJ8xQyKWDcqgKsXRYtn0kw"
}

为什么不尝试增加超时时间(毫秒),测试运行缓慢是正常的,尤其是当您的测试网络请求时

package.json


“测试”:“摩卡——超时10000”

为什么不尝试增加超时时间(毫秒),测试运行缓慢是正常的,尤其是在测试网络请求时

package.json


“测试”:“摩卡咖啡——超时10000”

您的端点实际运行时间是否可能超过2秒?如果是这样,您可能希望在运行Mocha:时增加超时时间


此外,端点是否返回响应?如果不是,增加超时将没有帮助。您能否将
/v1/users
端点的代码添加到您的问题中,以研究这种可能性?

您的端点实际运行时间是否可能超过2秒?如果是这样,您可能希望在运行Mocha:时增加超时时间


此外,端点是否返回响应?如果不是,增加超时将没有帮助。您能否将
/v1/users
端点的代码添加到您的问题中,以研究这种可能性?

对此不确定。但据我回忆,混合承诺和回调风格(
done
-callback)可能会在摩卡造成这样的问题

尝试仅使用承诺:

  • 从测试中删除所有
    done
  • 实际上
    return
    承诺(
    return chai.request…

    • 对此不太确定。但据我回忆,混合承诺和回调风格(
      done
      -callback)可能会在摩卡造成这样的问题

      尝试仅使用承诺:

      • 从测试中删除所有
        done
      • 实际上
        return
        承诺(
        return chai.request…
      问题在于该测试:
      mongoDB connect.js

      它比其他人跑得早。mongoDB连接正在关闭,这导致其他测试超时。当我删除close命令时,所有测试都按预期通过了

      “严格使用”;
      //NPM安装猫鼬和柴。确保摩卡咖啡在全球销售
      //安装
      const mongoose=require('mongoose');
      const Schema=mongoose.Schema;
      const chai=要求(“chai”);
      const expect=chai.expect;
      //创建一个接受“name”对象的新架构。
      //“名称”是必填字段
      const testSchema=新模式({
      名称:{type:String,必需:true}
      });
      //mongoose连接选项
      变量选项={
      useNewUrlParser:true,
      useUnifiedTopology:正确
      }
      //创建名为“Name”的新集合
      const Name=mongoose.model('Name',testSchema);
      描述('数据库测试',函数()){
      //开始测试之前,请创建沙盒数据库连接
      //一旦建立了连接,调用done()
      在(功能)之前(完成){
      //猫鼬mongodb://localhost:27017",选择),;
      猫鼬mongodb://ip/testDatabase",选择),;
      const db=mongoose.connection;
      db.on('error',console.error.bind(console,'connection error'));
      db.once('open',function(){
      log('我们已连接到测试数据库!');
      完成();
      });
      });
      描述('测试数据库',函数()){
      //使用'name'值'Mike'保存对象
      它('保存到测试数据库的新名称',函数(完成){
      var testName=Name({
      名字:“迈克”
      });
      testName.save(完成);
      });
      它('不要将不正确的格式保存到数据库',函数(完成){
      //试图用错误信息保存。应触发错误
      var错误保存=名称({
      notName:'不是Mike'
      });
      错误保存。保存(错误=>{
      if(err){return done();}
      抛出新错误('应生成错误!');
      });
      });
      它('应该从测试数据库中检索数据',函数(完成){
      //查找以前保存的“Mike”对象。
      Name.find({Name:'Mike'},(呃,Name)=>{
      if(err){throw err;}
      如果(name.length==0){抛出新错误('No data!');}
      完成();
      });
      });
      });
      //所有测试完成后,删除数据库并关闭连接
      之后(功能(完成){
      mongoose.connection.db.dropDatabase(function()函数){
      猫鼬。连接。关闭(完成);
      });
      });
      });
      
      问题在于此测试:
      mongoDB connect.js

      它在其他测试之前运行。mongoDB连接正在关闭,这导致其他测试超时。当我删除close命令时,所有测试都按预期通过

      “严格使用”;
      //NPM安装猫鼬和柴。确保摩卡咖啡在全球范围内销售
      //安装
      const mongoose=require('mongoose');
      const Schema=mongoose.Schema;
      const chai=要求(“chai”);
      const expect=chai.expect;
      //创建一个接受“name”对象的新架构。
      //“名称”是必填字段
      const testSchema=新模式({
      名称:{type:String,必需:true}
      });
      //mongoose连接选项
      变量选项={
      useNewUrlParser:true,
      useUnifiedTopology:正确
      }
      //创建名为“Name”的新集合
      const Name=mongoose.model('Name',testSchema);
      描述('数据库测试',函数()){
      //开始测试之前,请创建沙盒数据库连接
      //一旦建立了连接,调用done()
      在(功能)之前(完成){
      //猫鼬mongodb://localhost:27017",选择),;
      猫鼬mongodb://ip/testDatabase",选择),;
      const db=mongoose.connection;
      db.on('error',console.error.bind(console,'connection error'));
      db.once('open',function(){
      console.log('我们已连接