Я работаю над преобразованием синхронного кода asp.net в .net 4.5 и новым асинхронным синтаксисом.
У меня есть много тестового кода, который выглядит так:
var retVal = new Foo(bar,baz);
_myMock.Setup(x => x.DoSomething(123)).Returns(retVal);
Когда я преобразовываю сигнатуру DoSomething с Foo DoSomething()
на async Task<Foo> DoSomething()
, весь мой тестовый код приходится переписывать. Мой текущий обходной путь - преобразовать исходный код во что-то вроде:
var retVal = new Foo(bar,baz);
_myMock.Setup(x => x.DoSomething(123))
.Returns(new Task<Foo>(()=>retVal));
Это не особенно сложное преобразование, но оно утомительно, когда у меня есть тысячи тестов, которые нужно обновить.
Я попытался создать метод расширения под названием ReturnsAsync, чтобы сделать некоторые из этих форм m, но у меня были некоторые проблемы с выводом типов, которые я не мог полностью решить. Есть ли стандартный или более простой способ преобразовать такой макет, чтобы лучше обрабатывать асинхронный метод?