Avis de non-responsabilité, je travaille dans Typemock.
Pour éviter des exceptions, vous devriez faux tous les futurs instatnces de MyDataContext:
var fakeDC = Isolate.Fake.AllInstances<MyDataContext>();
Et puis définir le comportement fo MyFunction():
int? id = 10;
string name = "David";
Isolate.WhenCalled(() => fakeDC.MyFunction(id, name)).WithExactArguments().WillReturn(..);
Il veille à ce que toutes les instances de MyDataContext seront faked (créé par le nouveau MyDataContext() dans n'importe quelle partie de votre programme), et le comportement de MyFunction() sera également truqué.
Comme je ne connais pas tous les détails, consultez l'exemple ci-dessous pour plus de compréhension:
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);
}
Voir toutes les informations dans notre docs.
"Ne fonctionne pas" n'est pas une description d'erreur. Qu'est-ce qui se passe? –
Ne vous moquez pas. Abstract it away: http://bit.ly/gHLubu. – Steven