Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 变量isConnected未更改_Javascript_Mysql_Scope_Mocha.js_Chai - Fatal编程技术网

Javascript 变量isConnected未更改

Javascript 变量isConnected未更改,javascript,mysql,scope,mocha.js,chai,Javascript,Mysql,Scope,Mocha.js,Chai,isConnected应该是一个变量,用于测试数据库连接是否成功。现在在我的DatabaseTest类中,我想断言这个isConnected变量。isConnected在数据库对象中声明,因此应该可以通过database.isConnected访问它。但是makeConnection()和closeConnection()中的值没有更改。我怀疑这是因为isConnected不是全局变量。而且,当我在var mysql行之后将其声明为var isConnected时,它也不会更新它。 我是否缺少一

isConnected应该是一个变量,用于测试数据库连接是否成功。现在在我的DatabaseTest类中,我想断言这个isConnected变量。isConnected在数据库对象中声明,因此应该可以通过database.isConnected访问它。但是makeConnection()和closeConnection()中的值没有更改。我怀疑这是因为isConnected不是全局变量。而且,当我在var mysql行之后将其声明为var isConnected时,它也不会更新它。 我是否缺少一些基本的范围基础知识

var mysql = require('mysql');

//Database
var database = {

isConnected: false,

makeConnection: function(){

    var connectionString = {
        host: '192.168.1.3',
        port: 3306,
        user: 'root',
        password: 'secret',
        database: 'user_profile_database'
    };

    var activeConnection = mysql.createConnection(connectionString);
    activeConnection.connect(function(error){
            if(error){
                throw error;
            }
            console.log("Successfull connection!");
        });
        isConnected = true;
    return activeConnection;
},

closeConnection: function(activeConnection){
    activeConnection.end(function(error){
        if(error){
            throw error;
        }
        console.log("Successfull disconnetion!");
    });
    isConnected = false;
  }
}

module.exports = database;
这就是测试用例:

var database = require('../Code/Database/Database');
var expect = require('chai').expect;

//Tests for the Database class.
describe("#Database", function(){

//Test for the makeConnection method
describe("#makeConnection", function(){

    it("should make a connection with the database", function(){
        expect(database.isConnected).to.be.false;
        var connection = database.makeConnection();
        expect(database.isConnected).to.be.true;
    })
  })
})

makeConnetion()
closeConnection()
方法中,应将
isConnected
称为
this.isConnected

例如:

var mysql = require('mysql');

//Database
var database = {

isConnected: false,

makeConnection: function(){

    var connectionString = {
        host: '192.168.1.3',
        port: 3306,
        user: 'root',
        password: 'secret',
        database: 'user_profile_database'
    };

    var activeConnection = mysql.createConnection(connectionString);
    activeConnection.connect(function(error){
            if(error){
                throw error;
            }
            console.log("Successfull connection!");
        });
        this.isConnected = true; // instead of just isConnected
    return activeConnection;
},

closeConnection: function(activeConnection){
    activeConnection.end(function(error){
        if(error){
            throw error;
        }
        console.log("Successfull disconnetion!");
    });
    this.isConnected = false; // instead of just isConnected
  }
}

module.exports = database;

isConnected
是对象的属性。你必须通过对对象的引用来引用该属性。我怎么会忽略这一点?我记得我试过这个,但可能也出了什么问题。谢谢!