免责声明,我在 Typemock 工作。
为避免异常,您应该伪造 MyDataContext 的所有未来实例:
var fakeDC = Isolate.Fake.AllInstances<MyDataContext>();
然后设置 MyFunction() 的行为:
int? id = 10;
string name = "David";
Isolate.WhenCalled(() => fakeDC.MyFunction(id, name)).WithExactArguments().WillReturn(..);
它确保 MyDataContext 的所有实例都将被伪造(由程序的任何部分中的 new MyDataContext() 创建),并且 MyFunction() 行为也将被伪造。
由于我不知道所有细节,请查看以下示例以获得更多理解:
internal class Foo
{
public Foo()
{
}
public int Bar()
{
var x = new MyDataContext();
return x.MyFunction(null, "5");
}
}
public class MyDataContext : DataContext
{
//
public int MyFunction(int? a, string b)
{
if(a == null)
{
throw new Exception();
}
return 0;
}
}
[TestMethod, Isolated]
public void TestMyDataContext()
{
//Arrange
var fakeDC = Isolate.Fake.AllInstances<MyDataContext>();
Isolate.WhenCalled(() => fakeDC.MyFunction(null, "5")).WithExactArguments().WillReturn(6);
//Act
var foo = new Foo();
var res = foo.Bar();
//Assert
Assert.AreEqual(6, res);
}
查看我们文档中的所有信息。