Анимационный статический метод с Moq - PullRequest
0 голосов
/ 14 мая 2018

До сих пор я был в состоянии смоделировать статические методы, изменив его сигнатуру на что-то вроде (псевдо)

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());

Я знаю, что я должен был подождать где-то в течение всего разговора, но он просто не сдвинулся с места. Каким должен быть правильный способ издеваться над этим делегатом сейчас?

1 Ответ

0 голосов
/ 14 мая 2018

Будет ли это работать для вас?

MyClass.FooBar = (string obj1, string obj2) => Task.FromResult(new TResult());

Примечание: не уверен, откуда исходит ваш TResult, но так как невозможно иметь экземпляры универсальных функций в C #, ваш TResult должен быть "известен" во время написания макета, т.е.

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...