3

在进行单元测试时,我偶然发现了静态FreshPageModelResolver.ResolvePageModel,这显然是不可测试的。

我打算做一个包装器和一个接口,但我的一部分是说“FreshMvvm 是一个现代框架,为应该完全可测试的现代架构而设计”

我错过了什么吗?我应该没用过FreshPageModelResolver.ResolvePageModel吗?

看源码,其实并没有真正需要静态实现:https ://github.com/rid00z/FreshMvvm/blob/master/src/FreshMvvm/FreshPageModelResolver.cs

4

1 回答 1

3

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
}

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

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

于 2018-01-03T20:29:24.340 回答