如何在私有类型中等待静态异步方法?

时间:2017-04-26 06:10:45

标签: c# unit-testing reflection async-await

我正在为包含私有嵌套类的C#应用​​程序编写单元测试。该类反过来定义了一个静态异步方法,我想测试:

public class FooClass {
    private static class BarClass {
        public static async Task<string> BazMethod() { }
    }
}

现在看来我应该能够在我的测试方法中执行以下操作:

var barClass = new PrivateType(typeof(FooClass).GetNestedType("BarClass", BindingFlags.NonPublic);
var ret = await (Task<string>)barClass.InvokeStatic("BazMethod");

当我运行它时,barClass已成功初始化,并且在调试器中我可以看到它的DeclaredMethods包括{System.Threading.Tasks.Task'1[System.String] BazMethod()}。但是对InvokeStatic的调用因MissingMethodException而失败:Method Project.FooClass+BarClass.BazMethod not found.

也许是因为BazMethod是异步的,它的真实名称用于反射目的,我需要将这个装饰包含在传递给InvokeStatic调用的名称中吗?

0 个答案:

没有答案