我上课了,我需要测试 RunMethod 。问题是,ExternalClass需要在服务器端运行一些应用程序(app提供外部dll' s)。我的开发环境有这个应用程序,但我的测试开发环境还没有。我的问题是,如何在UnitTests中填充/伪造ExternalClass以不检查应用程序是否存在(测试总是在没有该外部应用程序的情况下使用env)?这个类在测试中并不重要,但如果我执行RunMethod会自动运行。
public class MyExampleClass : ISomeInterface
{
private static ExternalClass = new ExternalClass(string someParam);
public object RunMethod()
{
/* Actuall code hear, doesn't matter */
/* few unimportant (from the view point of tester) operation in ExternalClass (object loggin etc.) */
return someVar;
}
}
答案 0 :(得分:2)
MsFakes为shim类生成一个名为AllInstances
的属性,通过此属性可以覆盖任何实例方法的行为:
[TestMethod]
public void TestMethod1()
{
using (ShimsContext.Create())
{
ShimExternalClass.AllInstances.ToString01 = () =>
{
return String.Empty();
};
Assert.IsNull(new ExternalClass().ToString());
}
}