【发布时间】:2012-06-10 23:13:40
【问题描述】:
我在这里看到了几个处理类似问题的问题,但没有一个对我有帮助。
我在 MVC 3 项目中使用 NUnit 和 VS 2010。 我有一个测试项目,正在编写我的第一个测试 Evar! :-)
你不为我终于做到了吗?!
这是我遇到的错误
Microsoft.Practices.ServiceLocation.ActivationException:激活 尝试获取数据库类型的实例时发生错误,键 “我的连接”----> Microsoft.Practices.Unity.ResolutionFailedException:解决 依赖失败,类型 = “Microsoft.Practices.EnterpriseLibrary.Data.Database”,名称 = “我的连接”。异常发生时:解决时。例外是: InvalidOperationException - 无法构造类型 Database。 您必须配置容器以提供此值。
我已经为 web.config 配置了所有这些,并且当不在测试中运行时数据完美返回,所以我知道不是配置正在死去,它只是在与 NUnit 一起使用时死去。
这是我的连接信息:
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
...
<dataConfiguration defaultDatabase="MyConnection" />
<connectionStrings>
<add name="MyConnection" connectionString="Data Source=MyServerName;Initial Catalog=MyDB;user id=MyUser;password=MyPassword"
providerName="System.Data.SqlClient" />
</connectionStrings>
我已经使用 NuGet 安装了 DaaB,并且还做了一个干净的手动参考。无论哪种方式,数据在正常使用中加载良好,但在测试中它在这一行死亡:
var database = DatabaseFactory.CreateDatabase("MyConnection");
在这个方法中
public IEnumerable<SchoolSearchResultsDTO> Find(SchoolSearchInputDTO dto) {
List<SchoolSearchResultsDTO> fullList;
var database = DatabaseFactory.CreateDatabase("MyConnection");
using (var command = database.GetStoredProcCommand("dbo.usp_School_SearchBySchoolName")) {
database.AddInParameter(command, "@I_strSchoolName", DbType.String, dto.SearchTerm);
database.AddInParameter(command, "@I_intNumberOfRecords", DbType.Int32, dto.MaxSearchResults);
using (var reader = database.ExecuteReader(command)) {
fullList = new List<SchoolSearchResultsDTO>();
while (reader.Read()) {
var fullRecord = new SchoolSearchResultsDTO();
fullRecord.SchoolID = reader.GetInteger("SchoolId");
fullRecord.SchoolName = reader.GetString("SchoolName");
fullRecord.IsDetailedDisplayMode = reader.GetBoolean("IsDetailedDisplayMode");
fullList.Add(fullRecord);
}
reader.Close();
}
}
return fullList;
}
所有其他帖子都谈到了错误配置等。我很确定我的配置正确,否则我不会在正常使用情况下获得数据。所以它必须与 NUnit 和 DaaB 一起使用。
有什么好主意吗? :-) 谢谢大家!
【问题讨论】:
标签: asp.net-mvc-3 unit-testing c#-4.0 nunit enterprise-library