dart 无法模拟单例类在Flutter

dddzy1tm  于 12个月前  发布在  Flutter
关注(0)|答案(1)|浏览(154)

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

uhry853o

uhry853o1#

有不同的方式取决于你的确切要求是什么。
你可以使用一个额外的类来访问单例,在那里你可以创建多个示例,同时仍然保证它允许访问的值将是单例:

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 get value => _value;

  @visibleForTesting
  static set value(MySingleton val) => _value = val; 
  
  MySingleton._();
}

相关问题