在我的Locationer类中,我有一个使用Xamarin.Essentials: Geolocation的函数GetLocationAsync()。这个函数运行得很好,但是我想为这个函数创建单元测试。
我创建了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: Geolocation吗?我怎么才能修复它?
发布于 2019-11-06 21:42:18
Ryan Davis创建了基于Xamarin.Essentials的接口:https://www.nuget.org/packages/Xamarin.Essentials.Interfaces/
通过这种方式,您可以在IoC容器中注册Essentials实现:
builder.Register<IGeolocation, GeolocationImplementation>();你可以用类似Moq的东西来模拟接口:
var mockGeo = new Mock<IGeolocation>();
mockGeo.Setup(x => x.GetLocationAsync())
.ReturnsAsync(() => new Location());https://stackoverflow.com/questions/58731228
复制相似问题