尝试使用SQLite进行单元测试工作正常,但是测试一些存储库是有问题的,因为它们使用事务。
对于使用ReadCommitted的事务,一切都很好,但是其中一些使用ReadUncommitted,看看System.Data.SQLite不支持:
if ((this._defaultIsolation != IsolationLevel.Serializable) && (this._defaultIsolation != IsolationLevel.ReadCommitted))
{
throw new NotSupportedException("Invalid Default IsolationLevel specified");
}
我想知道,是否有可能拦截Session.BeginTransaction(...)以便我可以更改事务级别,仅用于单元测试。
更新 我的解决方案是下载System.Data.SQLite的源代码并修改异常以设置默认的隔离级别。我在这里写了一篇博客:
http://www.philliphaydon.com/2011/01/system-data-sqlite-isolationlevel-exception/
答案 0 :(得分:0)
除了实施ITransactionFactory
和ITransaction
之外,没有简单的扩展点。
将调用包装到BeginTransaction
可能更容易,以避免在测试时使用ReadUncommitted。