2015-01-27 3 views
6

Я успешно использовал Knex для подключения к базе данных. Но я хочу, чтобы иметь возможность тестировать мой код. Есть ли способ обмануть соединение с базой данных?Как я могу издеваться над поддельной базой данных для тестирования модулей против Knex?

Я пробовал использовать proxyquire, но я не могу заставить его работать.

Проблема, похоже, связана с тем, как инициализируется Knex.

var knex = require('knex')({ 
    client: 'mysql', 
    connection: {} 
}); 

Я установил knex для издевательства в своем модульном тесте.

myService = proxyquire('../app/myService', { 
     'knex': knexProxy 
}); 

Мое обслуживание включает в себя knex.

Когда моя служба запускает запрос, она терпит неудачу.

var sql = knex("table_name"); 
sql.insert(rowToInsert, "auto_increment_id"); 
sql.then(function (insertId) { 
    resolve(); 
}, function (err) { 
    reject(err); 
}); 

По какой-то причине я просто не могу захватить запрос, прежде чем он попытается установить соединение.

Я также пытался создать custom Knex Client, но это еще не сработало.

+1

Вы нашли решение? Я работаю с Knex, и у меня такая же проблема. благодаря – jomaora

ответ

0

Я использую in-memory Sqlite3 databases для автоматического тестирования с большим успехом. Это не истинное модульное тестирование, но оно работает намного быстрее, чем MySQL или PostgreSQL. Я разместил более подробную информацию об этом решении on a different question.

 Смежные вопросы

  • Нет связанных вопросов^_^