Test unitaire en C # de la méthode private-static acceptant une autre méthode private-static en tant que paramètre délégué

Ce que j’ai: J’ai une classe non statique contenant, entre autres, deux méthodes private-static: l’une d’elles peut être transmise à une autre en tant que paramètre délégué:

public class MyClass { ... private static ssortingng MyMethodToTest(int a, int b, Func myDelegate) { return "result is " + myDelegate(a, b); } private static int MyDelegateMethod(int a, int b) { return (a + b); } } 

Ce que je dois faire: Je dois tester (avec le test unitaire) la méthode statique privée MyMethodToTest en lui passant comme paramètre délégué la méthode statique privée MyDelegateMethod .

Ce que je peux faire: Je sais comment tester une méthode private-static, mais je ne sais pas comment transmettre à cette méthode une autre méthode private-static de la même classe que le paramètre delegate.

Donc, si nous supposons que la méthode MyMethodToTest n’a pas du tout le troisième paramètre, la méthode de test ressemblera à MyMethodToTest :

 using System; using System.Reflection; using Microsoft.VisualStudio.TestTools.UnitTesting; 

 [TestMethod] public void MyTest() { PrivateType privateType = new PrivateType(typeof(MyClass)); Type[] parameterTypes = { typeof(int), typeof(int) }; object[] parameterValues = { 33, 22 }; ssortingng result = (ssortingng)privateType.InvokeStatic("MyMethodToTest", parameterTypes, parameterValues); Assert.IsTrue(result == "result is 55"); } 

Ma question: Comment tester une méthode private-static en lui passant comme paramètre délégué une autre méthode private-static de la même classe?

voici comment cela devrait aller

 [TestMethod] public void MyTest() { PrivateType privateType = new PrivateType(typeof(MyClass)); var myPrivateDelegateMethod = typeof(MyClass).GetMethod("MyDelegateMethod", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static); var dele = myPrivateDelegateMethod.CreateDelegate(typeof(Func)); object[] parameterValues = { 33,22,dele }; ssortingng result = (ssortingng)privateType.InvokeStatic("MyMethodToTest", parameterValues); Assert.IsTrue(result == "result is 55"); }