使用Dapper.Contrib的单元测试方法插入扩展方法

时间:2017-03-03 12:58:34

标签: c# unit-testing dapper ormlite-servicestack dapper-contrib

我正在尝试使用Dapper.Contrib.Extensions(特别是Insert(object)扩展方法)为存储库编写单元测试。由于这是一个静态方法,我们无法使用伪IDbConnection捕获输出。我在网上找到了推荐使用带有ServiceStack.OrmLite.Sqlite的InMemoryDatabase的信息。这是我的代码:

    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结婚。

0 个答案:

没有答案