2016-10-23 12 views
1

ジャスミンテストフレームワークでsqlite3コードを実行しようとしたことがありますか?何らかの理由で、同じコードでノードを持つテーブル行を表示できますが、ジャスミンを実行しているノードでは表示できません。ジャスミンでsqlite3コードが実行されない

例えば、これは[TABLE_NAME]テーブル内のすべての行を表示します。ジャスミンの下

$ node src/test.js 
var sqlite3 = require('sqlite3').verbose(); 
var db = new sqlite3.Database("/home/user/test_db.sqlite3", 'OPEN_READ'); 
db.each("SELECT info FROM table_name", function(err, row) { 
    console.log(row.info); 
}); 

これと同じ正確なコードがない:

$ jasmine spec/TestSpec.js 
describe("Orders table", function() { 
    it("should display all items in table [table_name]", function() { 
     var sqlite3 = require('sqlite3').verbose(); 
     var db = new sqlite3.Database("/home/user/test_db.sqlite3", 'OPEN_READ'); 
     db.each("SELECT info FROM table_name", function(err, row) { 
      console.log(row.info); 
     }); 
    }) 
}); 

それが一つのテーブルの下で実行されます、なぜ誰もが知っていますが、他のものではない?

答えて

0

テストを非同期で実行する必要があります。 Jasmineは、DBが接続して繰り返すのを待っていません。 Jasmineにcallbackを提供して、テストを実行しても問題ないことを知らせることができます。また、ドキュメントごとに、この作業を行うためのモードとしてsqlite3.OPEN_READONLYを指定する必要がありました。おそらくこれはバージョンの変更によるものです。

describe("Orders table", function() { 
    it("should display all items in table [table_name]", function(done) { 
     var sqlite3 = require('sqlite3').verbose(); 
     var db = new sqlite3.Database("/home/user/test_db.sqlite3", sqlite3.OPEN_READONLY, function() { 
      db.each("SELECT info FROM table_name", function(err, row) { 
       console.log(row.info); 
      }, done); 
     }); 
    }) 
}); 
関連する問題