Использование базы данных в памяти Sqlite в качестве макета для соединения Mysql, - PullRequest
0 голосов
/ 13 марта 2020

Я строил модульные тесты для блоков доступа к данным, и мне нравилось заменять MySql дБ на Sqlite в базе данных памяти, которую я мог бы рассматривать как макет и загружать с тестовыми значениями.

Sqlite создается, как показано ниже

using (var connection = new SqliteConnection("" +new SqliteConnectionStringBuilder
                            {
                                DataSource = ":memory:"
                            }))
{

  connection.Open();

  using (var transaction = connection.BeginTransaction())
  {
    //code to create table and load data
    var connectionString=connection.ConnectionString
    methodToBeTested(connectionString);
    //Assert codes
  }
}

MySql код, который должен быть проверен модулем, как показано ниже

methodToBeTested(string connectionString)
{
 using (MySqlConnection cn = new MySqlConnection(connectionString))
 {
    cn.Open();//Exception->Unable to connect to any of the specified MySQL hosts
    //other codes
  }
}

Адаптер MySqlClient выдает исключение при открытии соединения базы данных SQLite. Есть ли способ добиться этого?

1 Ответ

1 голос
/ 13 марта 2020

Нет.

По крайней мере, не так, как вы настроили. Клиент MySQL не знает, как использовать базу данных SQLite. Клиент MySQL предназначен для подключения к серверному процессу MySQL, тогда как SQLite будет библиотекой кода, которая читает файл локальной базы данных. То, что оба являются «SQL», означает только то, что они (в основном) следуют одному и тому же стандарту для запроса данных после подключения к базе данных. Сам процесс подключения сильно отличается.

Даже если бы вы создавали уровень абстракции для процесса подключения, SQLite не был бы хорошим тестом для функции базы данных, написанной для MySQL. Ни один из них не следует и SQL spe c безупречно и может предложить больше, чем стандартная функциональность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...