我有一个带有 DAL 的 asp.net 项目(大多数代码来自其他人,但我正在维护和清理)。
我的 web 应用程序项目有一个 dataprovider 类,如下所示:
public class DataProvider : IDataProvider
{
private string DefaultConnectionString
{
get
{
return ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["myConnection"]].ConnectionString;
}
}
public T ExecuteMyQuery<T>(parameters)
{
//executes query on db
}
这个 Web 应用程序项目有一个数据层,它在网页和提供者之间进行交互,如下所示:
public class MyData : IMyData
{
private readonly IDataProvider dataProvider;
public MyData(IDataProvider dataProvider)
{
this.dataProvider = dataProvider;
}
public string GetTitle(string myVar)
{
//builds up stuff to send
return this.dataProvider.ExecuteMyQuery(...);
}
}
此项目的连接字符串在 web.config 中。
现在我有我的测试。为了简单和时间限制,我只使用一个测试数据库,并将创建实际的对象并针对测试数据库进行测试(理论上我们会使用更多的模拟、存根和各种东西,但没有时间。)
所以我有一个测试项目,它引用了我上面的 Web 应用程序项目。
public class MyTests
{
private MyData myData;
private DataProvider dataProvider;
[SetUp]
protected void SetUp()
{
dataProvider = new DataProvider();
mysData = new MyData(dataProvider);
}
[Test]
public void CheckTitles()
{
string title = myData.GetTitle("AVariable");
Assert.AreEqual(title, "A typical title");
}
但是当我在 NUnit 中运行它时,这总是给我一个空指针执行。如何让我的提供商使用新的连接字符串来指向我的测试数据库?我尝试添加了一个 app.config 文件,但它不起作用。