到目前为止,我已经能够通过将其签名更改为(伪)
来模拟静态方法public static Func<TResult> Foo = () => { return TResult; };
然后在测试中我可以通过
来模拟它MyClass.Foo = () => new TResult();
我现在面临一个新问题。
有一种签名方法如下:
public static async Task<TResult> FooBar(string obj1, string obj2)
我已将其更改为
public static Func<string, string, Task<TResult>> FooBar = async (obj1, obj2)
这很好地编译,但我没有把它编译为测试。
MyClass.FooBar(It.IsAny<string>(), It.IsAny<string>()) => Task.FromResult(new TResult());
我知道我应该等待整个电话的某个地方,但它只是不会让步。 现在嘲笑这个代表的正确方法是什么?
答案 0 :(得分:2)
这对你有用吗?
MyClass.FooBar = (string obj1, string obj2) => Task.FromResult(new TResult());
注意:不确定你的TResult来自哪里,但因为在C#中不可能有泛型函数的实例,所以你的TResult必须是&#34;已知&#34;在撰写模拟时,即
public static Func<string, string, Task<int>> Foo = Bar<int>;
public static async Task<TResult> Bar<TResult>(string obj1, string obj2) where TResult : new()
=> await Task.FromResult(new TResult());