В настоящее время я использую тестовую структуру, которую я выбрал, используя xUnit, AutoMoq, AutoFixture и AutoFixture.XUnit2. Я сталкиваюсь с проблемами с издевательскими методами с генерическими подписями.Использование методов AutoMoq с общими сигнатурами
AutoFixture, похоже, отлично подходит для обычных вещей. Если я попрошу CustomeObject<Task<List<Task<string>>>>
или какой-нибудь другой нелепый вложенный родовой тип, он, похоже, сгенерирует их, как ожидалось, вплоть до последнего узла.
Однако, если у меня есть интерфейс вроде этого:
public interface ITestInterface{
T Get<T>();
}
, а затем попытаться вызвать метод из издеваться я получил от AutoMoq он просто возвращает нуль. Так, например:
[Theory]
[MyAutoDaqaAttribute]
public async Task ATest(
Mock<ITestInterface> service
) {
var result = service.Object.Get<string>();
}
В этом результате код будет равен нулю. Мне это кажется странным. Не следует ли перейти к автосверке и попытаться создать значение типа T, т. Е. Новую строку? Кажется, что Autofixture уже показал, что он может обрабатывать дженерики просто отлично.
Или вам всегда нужно вручную настраивать какой-либо макетный метод, который имеет общую подписи?
Право, я должен отметить, я способ использования AutoConfiguredMoqCustomizations. Но спасибо за подтверждение того, что AutoConfiguredMoqCustomizations не может настроить общие методы. Так что, похоже, я не могу избежать некоторого уровня настройки, но я мог бы, по крайней мере, избежать необходимости устанавливать возвращаемые значения с помощью функции ReturnsUsingFixture. Я попробую это. Благодарю. – Riplikash