Ложные методы расширения IElasticClient - PullRequest
0 голосов
/ 10 декабря 2018

Есть ли способ высмеять следующее

        var result = await Client.SearchAsync<IndexedSite>(d => d
            .Index(SiteIndexName)
            .Query(q => q.MatchAll())
            .Sort(sd => sd.Field(s => s.Name, SortOrder.Ascending))
            .Take(c_maxSiteListSize));

Будет ли один. Обратные вызовы в этой ситуации?

Моя текущая настройка:

    private Mock<IElasticClient> _client = new Mock<IElasticClient>();
    private Mock<ISearchResponse<IndexedSite>> indexedSite = new Mock<ISearchResponse<IndexedSite>>();

    _client.Setup(x =>
        x.SearchAsync<IndexedSite>(It.IsAny<Func<SearchDescriptor<IndexedSite>, ISearchRequest>>(),
            default(CancellationToken))).Returns(Task.FromResult(indexedSite.Object));

Это работает, и он возвращает indexedSite, однако он не 'Cover'. Методы расширения .Index / .Query / .Sort / .Take, что я и хочу.

1 Ответ

0 голосов
/ 27 февраля 2019

За @ Олег ответ.Не возможно смоделировать методы расширения.Вам нужно провести рефакторинг и избавиться от методов расширения, чтобы сделать его тестируемым

Подробнее здесь

...