0

在 mvc 3 解决方案中测试数据访问层和业务逻辑的最佳方法是什么?

我目前有一个项目,我使用存储库类来访问数据库,而数据库又使用休眠。当我尝试在自动生成的单元测试中为它们创建单元测试时,它们总是失败,因为 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);
    }

我怎样才能让它正常工作?

4

1 回答 1

1

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

您找到了需要更改以适应测试的区域这一事实很棒!!!这是单元测试的优点之一;您发现代码中的耦合应该被重构。

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

我希望这有帮助。我没有使用 nHibernate,所以我不能权威地谈论它,或者上面的链接会为您提供答案,但每个答案都有十个赞成票,所以看起来它是一个可靠的帖子!

于 2012-05-20T16:27:17.087 回答