我刚刚收到一个未完成的 asp.Net MVC 3 / nHibernate 项目来修复和完成,我正在尝试让已经存在的 nUnit 单元测试通过。
存储库测试是导致问题的原因。我想要做的只是向测试存储库添加几个项目,但如果我能弄清楚如何做到这一点,我会很高兴。情况如下:
[Test]
public void CanGetAllThings()
{
ServiceLocatorInitializer.Init();
ThingRepository thingRepository = new ThingRepository(); // ThingRepository inherits from NHibernateRepository<T>, IRepository<T>
Thing thingA = new Thing { /*initialization values*/ };
Thing thingB = new Thing { /*initialization values*/ };
componentAuthorizationRepository.DbContext.BeginTransaction();
ThingRepository.Save(ThingA); // Doesn't appear to be doing anything
ThingRepository.Save(ThingB);
componentAuthorizationRepository.DbContext.CommitTransaction();
ThingRepository.GetAll().ShouldNotBeNull(); // Passes
ThingRepository.GetAll().Count.ShouldEqual(2); // Fails with actual value 0
}
我应该使用模拟框架来创建内存数据库吗?对于这样一个简单的测试来说,这似乎有点过头了,应该只有一个 Repository.Add() 或 Repository.Save() 方法,但我显然在这里遗漏了一些重要的东西。
我是一名初级开发人员,不熟悉 MVC、nHibernate 和单元测试,所以我什至不清楚我的知识差距在哪里,所以我可以研究!任何指针都非常感谢。