2017-03-22 12 views
3

SQL Serverで簡単なクエリを実行しようとしていますが、分度器で実行するとすぐに実行され、何も返されません。どのようなヒントや作業例、私が間違っていることを指摘したり、分度器を使ってSQL Server上でSQLクエリを実行する方法を理解しています。SQL Serverデータベース(MSSQL)を照会する分度器

var sql = require('mssql'); 

describe('test db connection', function() { 

    it('tests db connection', function() { 

    ConnectDB() 

    }) 

    function ConnectDB() { 

    var config = { 
     user: 'user', 
     password: 'password', 
     server: 'xyz.database.windows.net', 
     database: 'dbdev', 

     options: { 
     encrypt: true 
     } 
    } 

    var connection = new sql.Connection(config) 
    connection.connect(function (err) { 
     console.log(err) 
    }) 

    var request = new sql.Request(connection); 
    request.query('select * from Config where [Key] like \'HidePreop%\'', function (err, recordeset) { 
     var res = recordeset; 
     console.log(res) 
    }); 

答えて

3

分度器テスト - itブロックのみを終了する分度器の制御フローでwebDriverJSコマンドを待ち、他の非同期アクティビティます手動itブロックがdoneを使用して待つようにする必要があります。この場合

-

describe('test db connection', function() {  
    it('tests db connection', function (done) { 
     // Any method that returns a promise. Similary if your method returns a callback you can handle accordingly 
     ConnectDB().then(function _onSuccess(){ 
      done(); 
     }).catch(function _onFailure(err){ 
      done.fail(err); 
     }) 
    }) 
}); 

そして、私はあなたのfuncionを修正するだろう - ConnectDB()をコールバックの決議に基づいて約束を返すためには、mssql npm packageで提供しています。 Refer hereコールバックを約束に変換する方法についてその素晴らしいチュートリアルです。

function ConnectDB() { 
    return new Promise(function (fulfill, reject) { 
     var config = { 
      user: 'user', 
      ............. 
     }; 
     var connection = new sql.Connection(config); 
     connection.connect(function (err) { 
      reject(err); 
     }); 

     var request = new sql.Request(connection); 
     request.query('select * from Config where [Key] like \'HidePreop%\'', function (err, recordeset) { 
      if (err) reject(err); 
      else fulfill(recordeset); 
     }); 
    }); 
} 
+0

おかげで、私はそれをチェックアウトします@AdityaReddy – rafalf

1

この設定を使用してMSSQLデータベースにアクセスし、テストファイルにインポートして、偽のページオブジェクトのように使用できます。 データベース情報をリポジトリの外部の外部ファイルに保存することを強くお勧めします。私は[email protected]のための作業例を投稿この

//test.js 
var db = require('db.js'); 

describe('Employee Management', function() {  

    it('Deleting an employee', function (done) { 
     db.deleteEmployeeByLastName('Pmurt'); 
     //REST OF CODE HERE 
     //... 
     //... 
     done(); 
    }) 
}); 
0

のようになりますnpm install --save-dev dotenv

//db.js 
const sql = require('mssql'); 

require('dotenv').config(); 

var config = { 
    user: process.env.MSSQL_USERNAME, 
    password: process.env.MSSQL_PASSWORD, 
    server: process.env.MSSQL_SERVER, 
    database: 'YOURDB', 
    options: { 
    encrypt: true 
    } 
}; 

module.exports = { 

/** Define sql queries here */ 
    deleteEmployeeByLastName(lastName) { 
    let my_query = `DELETE FROM dbo.Employee WHERE LastName='${lastName}'`; 
    sql.connect(config).then(function() { 
     new sql.Request() 
     .query(my_query).then(function (recordset) {}).catch(function (err) { 
      console.log(err); 
     }); 
    }); 
    } 
} 

テストファイルを使用してインストールすることができNPMライブラリdotenvから.envファイルを使用しています。 4

var sql = require('mssql'); 

describe('test db connection', function() { 
it('tests db connection', function (done) { 
    ConnectDB().then(function _onSuccess(_returned){ 
     console.log(_returned.recordset[0].FirstPSPOrderId) 

     done(); 
    }).catch(function _onFailure(err){ 
     done.fail(err); 
    }) 
}) 

});

function ConnectDB() { 
    return new Promise(function (fulfill, reject) { 
    var config = { 
     user: 'xxx', 
     password: 'xxx', 
     server: 'xxx', 
     port: 'xxx', 
     database: 'xxxxxx', 

     options: { 
      encrypt: true 
     } 
}; 
    var connection = new sql.ConnectionPool(config); 
    connection.connect((err) => { 
     if (err) reject(err); 

    //}); 

    let query = "select [FirstPSPOrderId] from XYZ" 
    connection.request() 
    .query(query, (err, recordeset) => { 

     console.dir('Record set: ' + recordeset) 
     console.dir('Err: ' + err) 

     if (err) reject(err); 
     else fulfill(recordeset); 
    }); 
}); 

}); 

}