【发布时间】:2016-04-04 18:17:10
【问题描述】:
我可以让它发挥作用,但我想知道最佳做法是什么以及为什么。我有一个控制器、一个模型和一个存储库,现在我想对控制器进行单元测试。我只是在写一个简单的测试来确保返回正确的视图。
这是我在控制器中的方法:
public ActionResult Selections(SelectionsViewModel model)
{
for (int i = 0; i < model.Sends.Count; i++)
{
Send send = new Send(new SendService(new Database().GetConnectionString()))
{
SendID = model.Sends[i].SendID,
Title = model.Sends[i].Title,
Subject = model.Sends[i].Subject,
SentDate = model.Sends[i].SentDate,
TimesViewed = model.Sends[i].TimesViewed,
Include = model.Sends[i].Include,
Exclude = model.Sends[i].Exclude
};
send.UpdateIncludeExclude();
}
return View(model);
}
这是通过我的 SendService 构造函数发送的 Database 类中的 GetConnectionString() 方法。
public string GetConnectionString()
{
return System.Configuration.ConfigurationManager.ConnectionStrings["DEVConnectionString"].ToString();
}
最后,我的单元测试:
[Test]
public void TestAssignmentSelections()
{
var obj = new AssignmentController();
var actResult = obj.Selections() as ViewResult;
NUnit.Framework.Assert.That(actResult.ViewName, Is.EqualTo("Selections"));
}
现在,我的单元测试失败了,我明白了原因。我的单元测试项目无法访问我正在测试的连接字符串所在的项目的 web.config。
我已经进行了一些研究,显然只是将 web.config 添加到我的单元测试项目中并将连接字符串也放入其中即可使其正常工作.. 但这似乎是一个 hack。
解决此问题的最佳方法是什么?有没有另一种方法来编写我的代码来适应这个?
【问题讨论】:
标签: asp.net-mvc unit-testing web-config