Xamarin Forms 的 FreshMvvm FreshPageModelResolver.ResolvePageModel 用于单元测试
Xamarin Forms' FreshMvvm FreshPageModelResolver.ResolvePageModel for Unit Testing
在进行单元测试时,我偶然发现了静态 FreshPageModelResolver.ResolvePageModel
,这显然是不可测试的。
我本来打算做一个包装器和一个界面,但我的一部分是说 "FreshMvvm is a modern framework, made for a modern architecture that should be fully testable"
我错过了什么吗?我应该没有使用 FreshPageModelResolver.ResolvePageModel
吗?
查看源码,其实没有静态实现的必要:https://github.com/rid00z/FreshMvvm/blob/master/src/FreshMvvm/FreshPageModelResolver.cs
如果您对它提供的功能感到满意,那么使用 FreshPageModelResolver.ResolvePageModel
没有任何问题。但将其视为第 3 方依赖项并将其封装在您自己的抽象之后,以保持您的代码解耦和可维护。
public interface IFreshPageModelResolver {
Page ResolvePageModel (Type type, object data);
//...code removed for brevity
}
实现将包装静态依赖项
public class DefaultPageModelResolver : IFreshPageModelResolver {
public Page ResolvePageModel (Type type, object data) {
return FreshPageModelResolver.ResolvePageModel(type, data);
}
//...code removed for brevity
}
并且接口可以根据需要注入依赖类。
您可以考虑分叉存储库并将抽象及其实现作为拉取请求提交给项目。
在进行单元测试时,我偶然发现了静态 FreshPageModelResolver.ResolvePageModel
,这显然是不可测试的。
我本来打算做一个包装器和一个界面,但我的一部分是说 "FreshMvvm is a modern framework, made for a modern architecture that should be fully testable"
我错过了什么吗?我应该没有使用 FreshPageModelResolver.ResolvePageModel
吗?
查看源码,其实没有静态实现的必要:https://github.com/rid00z/FreshMvvm/blob/master/src/FreshMvvm/FreshPageModelResolver.cs
如果您对它提供的功能感到满意,那么使用 FreshPageModelResolver.ResolvePageModel
没有任何问题。但将其视为第 3 方依赖项并将其封装在您自己的抽象之后,以保持您的代码解耦和可维护。
public interface IFreshPageModelResolver {
Page ResolvePageModel (Type type, object data);
//...code removed for brevity
}
实现将包装静态依赖项
public class DefaultPageModelResolver : IFreshPageModelResolver {
public Page ResolvePageModel (Type type, object data) {
return FreshPageModelResolver.ResolvePageModel(type, data);
}
//...code removed for brevity
}
并且接口可以根据需要注入依赖类。
您可以考虑分叉存储库并将抽象及其实现作为拉取请求提交给项目。