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
}

并且接口可以根据需要注入依赖类。

您可以考虑分叉存储库并将抽象及其实现作为拉取请求提交给项目。