Отказ от ответственности, я работаю в Typemock.
Чтобы избежать исключений, вы должны подделать все будущие экземпляры MyDataContext:
var fakeDC = Isolate.Fake.AllInstances<MyDataContext>();
И затем установить поведение для MyFunction ():
int? id = 10;
string name = "David";
Isolate.WhenCalled(() => fakeDC.MyFunction(id, name)).WithExactArguments().WillReturn(..);
Это гарантирует, что все экземпляры MyDataContext будут поддельными (созданными новым 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);
}
См. Всю информацию в наших документах .