在mvc 3解决方案中测试数据访问层和业务逻辑的最佳方法是什么?
我目前有一个项目,我使用存储库类来访问数据库,而数据库又使用hibernate。当我尝试在自动生成的单元测试中为它们创建单元测试时,它们总是会失败,因为nhibernate的配置在web.config中并且它并没有尝试查看那里。我究竟做错了什么?此特定方法返回此错误
"The Web request 'http://localhost:35601/' completed
successfully without running the test"
测试方法如下所示
[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("C:\\Users\\...", "/")]
[UrlToTest("http://localhost:35601/")]
public void GetByIdTest()
{
string someid= "..";
SomeObj actual = MyRepository.GetById(someid);
Assert.AreEqual(some, SomeObj.id);
}
我如何让它正常工作?
答案 0 :(得分:1)
将设置放在app.config中可以解决您在上面提出的问题,但更正确的答案是您应该使用模拟框架来模拟nHibernate会话。
您找到一个需要更改以适应测试的区域这一事实非常棒!这是单元测试的一个优点;你在代码中找到了应该重构的耦合。
我发现另一篇文章直接解决了您要尝试做的事情Mocking an NHibernate ISession with Moq。帖子中有两个答案,提供可能有用的方法。
我希望这会有所帮助。我没有使用过nHibernate所以我不能权威地谈论它或者上面的链接会给你一个答案,但是每个答案都有10个upvotes所以它看起来像是一个坚实的帖子!