作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 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();
现在我想使用 MOQ
来unit 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/
我是一名优秀的程序员,十分优秀!