我需要为从数据库加载数据的方法创建单元测试。我正在研究一些单元测试和数据库,大多数文章告诉你应该模拟数据库。但是,此方法基本上从数据库加载对象,并通过SQL执行一些限制。单元测试通过nhibernate查询数据库
因此,我想测试的是,实际的数据库查询工作成功,因此我不认为可以模拟数据库。
我使用NHibernate作为我的ORM,并且使用QueryOver
构建查询。由于数据库处于不一致状态,我发现单元测试数据库非常成问题。任何想法/方法如何去做这样的测试?
这是特定的方法,我想单元测试:
public IEnumerable<IArticlePanel> LoadPanelsApplicableToArticle(ArticleModule.IArticle article, Enums.ARTICLE_PANEL_LOCATION location)
{
CS.General_v3.Util.ContractsUtil.RequiresNotNullable(article, "Article must not be null");
var articleList = Modules.Factories.ArticleFactory.GetAllParentsForAnArticle(article).ToList();
articleList.Add(article);
var q = GetQuery();
q = q.WhereRestrictionOn(x => x.Article).IsInG(articleList.ConvertAll<long>(x => ((IBaseDbObject)x).ID));
q = q.Where(x => x.Location == location);
return FindAll(q);
}
切换到sqlite数据库进行测试。 –