バックエンド データベースへの接続にKnexを使用しています。しかし、コードを単体テストできるようにしたいと考えています。データベース接続をモックする方法はありますか?
proxyquireを使用してみましたが、動作しないようです。
問題は、Knex の初期化方法にあるようです。
var knex = require('knex')({
client: 'mysql',
connection: {}
});
単体テストでモックされるようにknexをセットアップしました。
myService = proxyquire('../app/myService', {
'knex': knexProxy
});
私のサービスにはknexが含まれています。
var knex = require('knex').knex,
サービスがクエリを実行すると失敗します。
var sql = knex("table_name");
sql.insert(rowToInsert, "auto_increment_id");
sql.then(function (insertId) {
resolve();
}, function (err) {
reject(err);
});
何らかの理由で、接続を試みる前にリクエストをキャプチャできないようです。
また、カスタム Knex Clientを作成しようとしましたが、まだ機能していません。