Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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
Javascript NodeJs Mocha未连接到数据库_Javascript_Mysql_Node.js_Mocha.js_Chai - Fatal编程技术网

Javascript NodeJs Mocha未连接到数据库

Javascript NodeJs Mocha未连接到数据库,javascript,mysql,node.js,mocha.js,chai,Javascript,Mysql,Node.js,Mocha.js,Chai,我试图用Mocha和Chai创建一些单元测试,但我无法连接到mysql服务器。下面是我的单元测试: process.env.NODE_ENV = 'test'; let chai = require('chai'); let chaiHttp = require('chai-http'); let server = require('../app'); let should = chai.should(); chai.use(chaiHttp); describe('API endpoi

我试图用
Mocha
Chai
创建一些单元测试,但我无法连接到mysql服务器。下面是我的单元测试:

process.env.NODE_ENV = 'test';

let chai = require('chai');
let chaiHttp = require('chai-http');
let server = require('../app');
let should = chai.should();

chai.use(chaiHttp);


describe('API endpoint /authenticate', function () {
  before((done) => {

    /* Todo: Clean up Database*/

    done()
  });


  it('should authenticate a user given CORRECT username/password', (done) => {

    let user = {
      username: 'ax850',
      password: 'test'
    };

    chai.request(server)
        .post('/api/authenticate')
        .send(user)
        .end((err, res) => {
          res.should.have.status(200);
          done();
        });

    done();
  });

});
如你所见,我正在做一个
POST
请求。然后在我处理这个
POST
请求的脚本中,我连接到一个mySQL服务器,如下所示:

 const db = require('./../../db_conn');
db_conn
中,我有:

const mysql = require('mysql');
const config = require('config.json')('./config.json');
let db;
const db_config = config.a_c.dbConfig;
function connectDatabase() {
  if (!db) {
    db = mysql.createConnection({
      host: db_config.host,
      user: db_config.user,
      port: db_config.port,
      database: process.env.NODE_ENV === 'test' ? db_config.db_test : db_config.db_dev,
      //database: db_config.db_dev,
      password: db_config.password
    });

    db.connect(function(err){
      if(!err) {
        console.log('Database is connected!');
      } else {
        console.log('Error connecting database!');
      }
    });
  }

  return db;
}

module.exports = connectDatabase();

但是,当我运行
test
命令:
mocha--timeout 10000
时,它不会连接到数据库。
mysql.createConnection
运行失败,但也没有给出错误。有什么想法吗?当我在不进行测试的情况下运行服务器时,这一点就起作用了。

在请求完成之前,您正在调用
done

   chai.request(server)
        .post('/api/authenticate')
        .send(user)
        .end((err, res) => {
          res.should.have.status(200);
          done();
        });
    // this is executed before chai.request is fulfilled
    done();