Можно ли создать модульные тесты для функций, которые используют Xamarin.Essentials: Geolocation API? - PullRequest
0 голосов
/ 06 ноября 2019

В моем классе Locationer есть функция GetLocationAsync(), в которой используется Xamarin.Essentials: Geolocation. Эта функция работает нормально, но я хотел бы создать модульный тест для этой функции.

Я создал проект xUnitTests и модульный тест:

public async Task LocationTest()
{
    Locationer locationer = new Locationer();
    var actual = locationer.GetLocationAsync();

    Assert.Equal("test", actual);
}

В проекте Xamarin Forms GetLocationAsync() возвращает "Локатор:46.55465, долгота: 15.64588, высота над уровнем моря: 262 ".

В моих модульных тестах GetLocationAsync() возвращает" Эта функция не реализована в переносной версии этой сборки "

Возможно ли использоватьXamarin.Essentials: геолокация в моем проекте модульных тестов? Как я могу это исправить?

1 Ответ

0 голосов
/ 06 ноября 2019

Райан Дэвис создал интерфейсы на основе Xamarin.Essentials: https://www.nuget.org/packages/Xamarin.Essentials.Interfaces/

Таким образом, вы можете зарегистрировать реализации Essentials в вашем контейнере IoC:

builder.Register<IGeolocation, GeolocationImplementation>();

И вы сможетеНаслаждайтесь интерфейсами с помощью чего-то вроде Moq:

var mockGeo = new Mock<IGeolocation>();
mockGeo.Setup(x => x.GetLocationAsync())
   .ReturnsAsync(() => new Location());
...