Model view controller 如何使用nunit在容器中测试MVC web应用程序?

Model view controller 如何使用nunit在容器中测试MVC web应用程序?,model-view-controller,nunit,autofac,Model View Controller,Nunit,Autofac,我们有一个在Autofac中运行的MVC web。所有配置都存储在web.config中的autofac config部分,当运行全局asax时,会设置容器,并通过向所有模块提供配置设置对其进行排序-我目前感兴趣的是NHibernate模块-因此这会将连接字符串设置到其构造函数中 我想构建一些测试来测试NHibernate的数据访问——我们有存储库和服务层,但这并不一定相关 我是否应该在解决方案中添加一个额外的项目,并在其中添加所有测试?如果我这样做,我是否需要在该测试项目的autofac配置中

我们有一个在Autofac中运行的MVC web。所有配置都存储在web.config中的autofac config部分,当运行全局asax时,会设置容器,并通过向所有模块提供配置设置对其进行排序-我目前感兴趣的是NHibernate模块-因此这会将连接字符串设置到其构造函数中

我想构建一些测试来测试NHibernate的数据访问——我们有存储库和服务层,但这并不一定相关


我是否应该在解决方案中添加一个额外的项目,并在其中添加所有测试?如果我这样做,我是否需要在该测试项目的autofac配置中复制数据库连接字符串,并在此项目中构建一个测试容器,以测试我的数据访问?或者我应该试着获取web应用程序的容器来进行测试-我假设不是全局的。除非被http get击中,否则asax的应用程序不会运行。我真的不想复制web应用程序的所有配置和容器创建,但目前我认为我必须…?

很抱歉看到对此反应缓慢。为实际的DAL编写集成测试并不常见——针对存根DAL的大部分时间单元测试已经足够了——因此,在这种情况下可能没有那么多经验

如果将所有配置放入Autofac模块中,则Global.asax内容可以非常简单,只需调用
builder.RegisterModule(new ConfigurationSettingsReader())
-然后可以使用
ConfigurationSettingsReader()的重载从集成测试加载相同的配置文件
接受文件名的

<>而不是在测试中有一个独立的模块用于NHiBiNT,考虑使用<代码> StutsPurvialTimeSeCo()/<代码>,而不是<代码> HypReQuestSistEd()/StistPoStHyPrExQuestSe()/<代码>。这具有相同的效果(除非您修改了生命周期层次结构:),并且可以在web和非web场景中使用

希望这有帮助!
Nick

Hmmm-看到一篇帖子,说可能根本不需要容器,我可以自己设置这些对象-但我仍然需要保留一个相同的配置文件来获取连接字符串和其他配置数据…更新-我在这里取得了一些进展-不确定是正确的解决方案,所以请告诉我您的想法:在my.sln中创建了一个名为Testing的新项目。将配置从web.config复制到此项目中,并将其命名为Testing.config。使名为NHibernateTestModule的替代NHibernateModule不使用.HttpRequestScoped()-因为测试客户端将不存在HttpRequest。还将ContainerBuilder代码从global.asax复制到我的test[Setup]方法中,然后从此容器解析我的测试方法中的服务层。这一切似乎都起到了作用——思考?