Mat*_*ski 3 c# unit-testing xunit xamarin xamarin.essentials
在我的Locationer课上,我有GetLocationAsync()使用 Xamarin.Essentials: Geolocation 的函数。这个函数工作正常,但我想为这个函数创建单元测试。
我创建了 xUnitTests 项目和单元测试:
public async Task LocationTest()
{
Locationer locationer = new Locationer();
var actual = locationer.GetLocationAsync();
Assert.Equal("test", actual);
}
Run Code Online (Sandbox Code Playgroud)
在 Xamarin Forms 项目中,GetLocationAsync()返回“纬度:46.55465,经度:15.64588,海拔:262”。
在我的单元测试中GetLocationAsync()返回“此程序集的便携式版本中未实现此功能”
是否可以在我的单元测试项目中使用 Xamarin.Essentials: Geolocation?我该如何解决?
Ryan Davis 基于 Xamarin.Essentials 创建了接口:https ://www.nuget.org/packages/Xamarin.Essentials.Interfaces/
通过这种方式,您可以在 IoC 容器中注册 Essentials 实现:
builder.Register<IGeolocation, GeolocationImplementation>();
Run Code Online (Sandbox Code Playgroud)
你可以用 Moq 之类的东西模拟接口:
var mockGeo = new Mock<IGeolocation>();
mockGeo.Setup(x => x.GetLocationAsync())
.ReturnsAsync(() => new Location());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1055 次 |
| 最近记录: |