我正在尝试使用Shim来测试这个名为DataSyncCore的类中的一个私有方法。 抱歉,如果这是太小事了,因为我是垫片的新手,并且无法弄清楚为什么这会给我一个错误说“属性或索引器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"));
}
}
答案 0 :(得分:1)
如果你不能公开课,你仍然可以使用Activator.CreateInstance:
var anInstance =(YourPrivateClass)Activator.CreateInstance(typeof(YourPrivateClass),true);
或者,如果您希望/需要直接测试该方法,可以将该方法标记为内部并在assemblyinfo中设置InternalsVisibleTo属性。