【问题标题】:Xamarin Forms' FreshMvvm FreshPageModelResolver.ResolvePageModel for Unit TestingXamarin Forms 的 FreshMvvm FreshPageModelResolver.ResolvePageModel 用于单元测试
【发布时间】:2018-06-13 11:22:12
【问题描述】:

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

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

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

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

【问题讨论】:

  • 该框架架构是否应该完全可测试是一个见仁见智的问题。如果你想让你的代码保持可维护性,那么我建议将静态依赖封装在你自己的抽象后面,可以正确地模拟和测试

标签: c# unit-testing xamarin.forms freshmvvm


【解决方案1】:

如果您对FreshPageModelResolver.ResolvePageModel 提供的功能感到满意,那么使用它并没有错。但将其视为 3rd 方依赖项,并将其封装在您自己的抽象后面,以保持您的代码解耦和可维护。

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
}

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-21
    • 2019-03-24
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多