【问题标题】:Not able to mock singleton class in flutter无法在颤动中模拟单例类
【发布时间】:2019-07-30 03:28:06
【问题描述】:

我已经创建了一个单例类,创建了一个静态方法来获取该类的实例,但是在单元测试时我无法模拟该类。飞镖中是否有其他方法可以只创建一个实例并且可以轻松进行单元测试。

【问题讨论】:

    标签: dart flutter dart-pub flutter-test


    【解决方案1】:

    根据您的具体要求,有不同的方法。
    您可以使用额外的类来访问单例,您可以在其中创建多个实例,同时仍保证它允许访问的值将是单例:

    class MySingleton {
      static final MySingleton value = MySingleton.();
    
      MySingleton._();
    }
    
    class MySingletonHelper {
      MySingleton get value => MySingleton.value;
    }
    

    或使用@visibleForTesting 的替代方法,其限制是单例值不能为final,并且写入权限仅受 DartAnalyzer 限制,但不受编译器限制(我不认为这是一个严重的限制) :

    import 'package:meta/meta.dart';
    
    class MySingleton {
      static MySingleton _value = MySingleton.();
    
      static MySingleton value => get _value;
    
      @visibleForTesting
      static set value(MySingleton val) => _value = val; 
    
      MySingleton._();
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2020-12-19
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多