无法在扑通中模拟单例课程

时间:2019-03-08 05:50:08

标签: dart flutter dart-pub flutter-test

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

1 个答案:

答案 0 :(得分:0)

根据您的确切要求有不同的方法。
您可以使用其他类来访问单例,您可以在其中创建多个实例,同时仍确保其允许访问的值为单例:

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._();
}