我正在尝试使用Shim在名为DataSyncCore的此类中测试我的私有方法之一。
抱歉,如果这太琐碎,因为我不熟悉shimm,无法弄清楚为什么这会给我一个错误,提示“该属性或索引器GetEnvironmentString无法在此上下文中使用,因为它缺少访问器。如何解决此问题?
//Method to be tested inside DataSyncCore Class
private Environments GetEnvironment(string env)
{
string environment = env.ToLower();
switch (environment)
{
case "dev":
return Environments.Dev;
case "qc":
return Environments.QC;
case "uat":
return Environments.UAT;
case "prod":
return Environments.PROD;
default:
return Environments.Dev;
}
}
这是我的单元测试:
[TestMethod]
public void DataSyncCore_GetsEnvironment_Succeeded()
{
using (ShimsContext.Create())
{
var core = new ShimDataSyncCore()
{
GetEnvironmentString = (dev) =>
{
return Environments.Dev;
}
};
Assert.AreEqual(Environments.Dev, core.GetEnvironmentString("dev"));
}
}
最佳答案
如果您无法公开该类,则仍可以使用Activator.CreateInstance:
var anInstance =(YourPrivateClass)Activator.CreateInstance(typeof(YourPrivateClass),true);
或者,如果您想/需要直接测试该方法,则可以将该方法标记为internal,并在assemblyinfo中设置InternalsVisibleTo属性。