Я работаю над преобразованием тела синхронного кода 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, но у меня были некоторые проблемы с допуском типа, которые я не мог полностью прибить. Есть ли стандартный или более простой способ преобразования такого макета, чтобы лучше обрабатывать метод асинхронизации?