gpt4 book ai didi

c# - 如何将最小起订量与 Xamarin.Forms DependencyService 结合使用

转载 作者:行者123 更新时间:2023-11-30 16:52:16 25 4
gpt4 key购买 nike

我正在编写一个 Xamarin.Forms 项目,我现在正尝试对其进行单元测试,目前我使用 Xamarin.Forms DependencyService像这样:

PCL 界面

public interface IGetDatabase
{
string GetDataBase()
}

设备特定实现

[assembly: Dependency(typeof(MyProject.Droid.GetDatabaseImplementation))]
class GetDatabaseImplementation: IGetDatabase
{
public string GetDatabase()
{
return "MyDatabasePath";
}
}

它在 PCL 中这样调用:

DependencyService.Get<IGetDatabase>().GetDatabase();

现在我想使用 MOQunit Test 来模拟我的接口(interface)实现,以便在运行时生成我的实现。我不想编写模拟类,因为我的实际示例更复杂,所以它不会起作用。

我该怎么做呢?我的 DepdencyService 是否与 Xamarin 耦合得太紧?

最佳答案

很遗憾,您只能在当前应用程序中注册一个实现接口(interface)的类。你需要一个允许你注册的依赖注入(inject)框架

a) 对象实例或

b) 创建并返回一个新模拟的方法

作为接口(interface)的实现。

C# 有许多不同的依赖注入(inject)容器可用。我使用 MvvmCross 附带的 Mvx。它允许您注册使用 Moq 创建的模拟。

示例

var myMoq = new Moq<IGetDatabase>();
Moq.Setup(x => x.GetDatabase()).Returns(() => "MyMockDatabasePath");
Mvx.RegisterSingleton<IGetDatabase>(() => myMoq.Object);

关于c# - 如何将最小起订量与 Xamarin.Forms DependencyService 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32744261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com