测试ASP.net MVC 3业务/数据逻辑

时间:2012-05-19 20:43:20

标签: asp.net asp.net-mvc-3 unit-testing nhibernate

在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);
    }

我如何让它正常工作?

1 个答案:

答案 0 :(得分:1)

将设置放在app.config中可以解决您在上面提出的问题,但更正确的答案是您应该使用模拟框架来模拟nHibernate会话。

您找到一个需要更改以适应测试的区域这一事实非常棒!这是单元测试的一个优点;你在代码中找到了应该重构的耦合。

我发现另一篇文章直接解决了您要尝试做的事情Mocking an NHibernate ISession with Moq。帖子中有两个答案,提供可能有用的方法。

我希望这会有所帮助。我没有使用过nHibernate所以我不能权威地谈论它或者上面的链接会给你一个答案,但是每个答案都有10个upvotes所以它看起来像是一个坚实的帖子!