AutoFixture не может создать экземпляр интерфейса после добавления атрибута AutoData и перемещения макетов в параметры мC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 AutoFixture не может создать экземпляр интерфейса после добавления атрибута AutoData и перемещения макетов в параметры м

Сообщение Anonymous »


Я учусь использовать AutoFixture и пытаюсь улучшить свои модульные тесты. Я хочу изменить один из моих тестов, чтобы использовать атрибут AutoData и получать макеты из параметров метода.

Вот мой модульный тест (он сейчас проходит):

[Теория, AutoData] общедоступная асинхронная задача UpdateMetadata_PassesAllMessagesToSummaryGenerator (история ConversationHistory) { // Договариваться var разговораStorage = _fixture.Freeze(); var summaryGeneratorMock = _fixture.Freeze(); разговорStorage.Setup(s => s.GetHistory(It.IsAny())).Returns(history); // Действовать _sut = _fixture.Create(); ждут _sut.UpdateMetadata(Guid.NewGuid()); // Утверждать Assert.That(history.Messages.Count, Is.GreaterThan(0)); foreach (сообщение var в истории.Сообщения) { summaryGeneratorMock.Verify(x => x.GenerateSummariesFor( It.Is(s => s.Contains(message.Text)) )); } } Вот тот же модульный тест, но после изменений:

[Теория, AutoData] общедоступная асинхронная задача UpdateMetadata_PassesAllMessagesToSummaryGenerator2( [Заморожено] Mock talkStorage, [Frozen] Mock summaryGeneratorMock, ConversationMetadataGenerator sut, История беседы) { // Договариваться разговорStorage.Setup(s => s.GetHistory(It.IsAny())).Returns(history); // Действовать дождитесь sut.UpdateMetadata(Guid.NewGuid()); // Утверждать Assert.That(history.Messages.Count, Is.GreaterThan(0)); foreach (сообщение var в истории.Сообщения) { summaryGeneratorMock.Verify(x => x.GenerateSummariesFor( It.Is(s => s.Contains(message.Text)) )); } } Результат модульного теста из второго примера:

AutoFixture.ObjectCreationExceptionWithPath: AutoFixture не удалось создать экземпляр из LlmConversation.Core.Storage.IConversationStorage, поскольку это интерфейс. Не существует единственного и наиболее подходящего способа создания объекта, реализующего интерфейс, но вы можете помочь AutoFixture разобраться в этом.

Нет проблем создать экземпляр IConversationStorage в первом модульном тесте, и в то же время невозможно создать его во втором тесте. Почему?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»