在进行单元测试时,我偶然发现了静态的FreshPageModelResolver.ResolvePageModel
,这显然是不可测试的。
我打算做一个包装器和一个接口,但是我的一部分是说“ FreshMvvm是一个现代框架,是为应该完全可测试的现代体系结构设计的”
我有什么想念的吗?我应该不用FreshPageModelResolver.ResolvePageModel
吗?
查看源代码,真正不需要静态实现:https://github.com/rid00z/FreshMvvm/blob/master/src/FreshMvvm/FreshPageModelResolver.cs
最佳答案
如果您对FreshPageModelResolver.ResolvePageModel
所提供的功能感到满意,那就没错。但是,请像对待第三方依赖一样对待它,并将其封装在您自己的抽象后面,以保持代码的解耦和可维护性。
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
}
并且可以根据需要将接口注入到依赖类中。
您可以考虑分叉存储库,并将抽象及其实现作为请求请求提交给项目。