NodeJS和Mocha:测试正在通过,而不是失败

时间:2018-03-27 04:33:05

标签: javascript node.js promise mocha chai

以下程序是读取文件夹下的所有文件,并检查所有文件是否包含电子邮件信息。

当第二个“if”语句中的条件为真时,以下测试应该失败(即,承诺被拒绝并且状态应该失败)。执行正在停止,但测试正在通过而不是失败。 那么,我如何使下面的测试失败。

先谢谢。

var checkFileContent = function(directory) {
  var results = [];
  fs.readdir(directory, function(err, list) {
   // if (err) return done(err);
   console.log("The folder or list of file names :  " + list);
var i = 0;
(function next() 
{
  var file = list[i++];
 // if (!file) return done(null, results);
  file = directory + '/' + file;
  fs.stat(file, function(err, stat) 
  {
    if (stat && stat.isDirectory()) 
    {
      checkFileContent(file, function(err, res) 
      {
        results = results.concat(res);
        next();
      });
    } else

    {
      fs.readFile(file, "utf8", function(err, data) 
        {
           // if ( err )
          //  { throw err;}
           console.log(file +" file content is");
           console.log(data);
           console.log( data.toLowerCase().indexOf('email'));

           return new Promise((resolve, reject) => {
            if(data.toLowerCase().indexOf('email') != -1)
            {
                return reject(file + 'contains email ');
            }
            else

    {
      return new Promise((resolve, reject) => 
      {
      fs.readFile(file, "utf8", function(err, data) 
        {
           // if ( err )
          //  { throw err;}
           console.log(file +" file content is");
           console.log(data);
           console.log( data.toLowerCase().indexOf('email'));

          //return newfunc(file,data);

              if(data.toLowerCase().indexOf('email') != -1)
              {
                reject(file + 'contains email ');

               }
              else
              {
                  console.log(file + 'doesnt contain email');
                  resolve(true);
              }
          }).catch ((err) =>
            {
               //Execution is getting stopped here, but the test is getting passed instead of getting failed.
                return reject(err);
          });

        });

        results.push(file);
          //console.log("List of files under the current Log folder are : " + results);
        next();
      } // else closure
  }); // fs.stat() closure

})();  }); 

}

使用Mocha从另一个JS文件调用上述函数,如下所示:

  it('should read Log files', function () {
    return ----
        .then((abc) => {
            ------
        }).then(()=>
        {
             return JSFileName.checkFileContent(directory);

        }).catch((err) => {
            return Promise.reject(err);
        })
})

0 个答案:

没有答案