Насмешливый ответ RestSharp - PullRequest
0 голосов
/ 02 мая 2020

В данный момент я пытаюсь написать модульный тест, и у меня возникают проблемы с издевательством над RestSharp. Тест, который я пытаюсь написать, предназначен для метода GetAll.
Это код, который я пытаюсь протестировать.

    public class Client: IClient
{
    public IRestClient RestClient { get; set; }
    public IOptions<ClientSettings>Settings { get; set; }
    public Client(IOptions<ClientSettings>options)
    {
        Settings = options;
        RestClient = new RestClient(options.Value.BaseUrl);
    }

    public async Task<List<EventDTO>> GetAll()
    {
        var allEvents = await RetrieveAllEvents();

        var data = TransformData(allEvents);

        return data;
    }

    private static List<EventDTO> TransformData(IEnumerable<Event> allEvents)
    {

        var data = allEvents.SelectMany(con =>
            con.Geometries.Select(geo =>
                new EventDTO
                {
                    Title = con.Title,
                    Id = con.Sources.FirstOrDefault()?.Id,
                    CategoriesTitle = con.Categories.FirstOrDefault()?.Title,
                    Closed = con.Closed,
                    DateTime = geo.Date
                })
        ).ToList();
        return data;
    }

    private async Task<IEnumerable<Event>> RetrieveAllEvents()
    {
        var openEvents = await RetrieveEvent(Settings.Value.GetAllOpen);
        var closedEvents = await RetrieveEvent(Settings.Value.GetAllClosed);
        var allEvents = openEvents.Events.Concat(closedEvents.Events);
        return allEvents;
    }

    private async Task<RootObject> RetrieveEvent(string request)
    {
        var responseData = new RestRequest(request, Method.GET);

        var content = await RestClient.GetAsync<RootObject>(responseData);

        return content;
    }

}

Когда код попадает в эту строку, он просто перестает работать. Я попытался попробовать и поймать его, чтобы увидеть, что это за ошибка, но это просто уносит стек.

var data = await RestClient.GetAsync<RootObject>(responseData);

Я видел пример в Интернете и пытался издеваться над RestSharp

restClient.Setup(c => c.ExecuteAsync<EventDTO>(
                 Moq.It.IsAny<IRestRequest>(),
                 Moq.It.IsAny<Action<IRestResponse<EventDTO>, RestRequestAsyncHandle>>()))
                .Callback<IRestRequest, Action<IRestResponse<EventDTO>, RestRequestAsyncHandle>>((request, callback) =>
                {
                  var responseMock = new Mock<IRestResponse<EventDTO>>();
                  responseMock.Setup(r => r.Data).Returns(new EventDTO() { });
                  callback(responseMock.Object, null);
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...