Метод модульного тестирования с Dapper.Contrib Вставить метод расширения
Я пытаюсь написать модульный тест для хранилища, используя Dapper.Contrib.Extensions (в частности, метод расширения Вставка (объект)). Так как это статический метод, мы не можем перехватить вывод с помощью ложного IDbConnection. В Интернете я нашел информацию, которая рекомендовала использовать InMemoryDatabase с ServiceStack.OrmLite.Sqlite. Вот код, который у меня есть для этого:
public class InMemoryDatabase
{
private readonly OrmLiteConnectionFactory _dbFactory =
new OrmLiteConnectionFactory(":memory:", SqliteOrmLiteDialectProvider.Instance);
public IDbConnection OpenConnection() => _dbFactory.OpenDbConnection();
public void Insert<T>(IEnumerable<T> items)
{
using (var db = OpenConnection())
{
db.CreateTableIfNotExists<T>();
foreach (var item in items)
{
db.Insert(item);
}
}
}
}
У меня простой старый класс POCO без аннотаций данных. Когда я тестирую метод с помощью вызова метода расширения из Dapper и базы данных In-Memory, я получаю следующую ошибку:
Исключение типа "System.Data.SQLite.SQLiteException" произошло в Dapper.dll, но не было обработано в коде пользователя
Дополнительная информация: ошибка логики SQL или отсутствующая база данных
нет такой функции: SCOPE_IDENTITY
Я знаю, что ошибка связана с тем, что Dapper и Sql Server используют функцию, недоступную в Sql Lite. Что я хотел бы знать, так это способ обойти это ради модульного тестирования метода с помощью вызова метода расширения. Я не женат на ServiceStack.OrmLite, если кто-то нашел другой путь.