如何在单元测试中使连接字符串成为常量?

时间:2014-12-03 18:33:40

标签: c# unit-testing connection-string

我有一个动态连接字符串构建器,因为我需要为每个客户使用不同的数据库。

当我测试这个时,我想模拟动态连接字符串构建器以返回特定的客户字符串对象。我遇到的问题是C#将连接字符串错误地保持为常量。

 private const string connectionString = 
 @"metadata=res://Data/CustomerModel.csdl|res://Data/CustomerModel.ssdl|
 res://Data/CustomerModel.msl;provider=System.Data.SqlClient;
 provider connection string=/""Data Source=MyDB;Initial Catalog=MyCustomer;
 User ID=SomeUser;Password=SomePassword"

目前的错误是:

 An exception of type 'System.ArgumentException' occurred in EntityFramework.dll but    
 was not handled in user code

 Additional information: Keyword not supported: 'initial catalog'.

我知道C#是如何存储连接字符串的,我不知道如何修复它。 我不想使用我拥有的连接字符串构建器服务,因为那时我的测试将不仅仅依赖于这个“单元”。我想伪造连接字符串构建器以返回该连接字符串。

任何建议?

1 个答案:

答案 0 :(得分:1)

一个选项是使用EntityConnectionStringBuilder并手动构建它。

http://msdn.microsoft.com/en-us/library/vstudio/bb738533(v=vs.100).aspx