dart 无法模拟单例类在Flutter

dddzy1tm  于 2024-01-04  发布在  Flutter
关注(0)|答案(1)|浏览(221)

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

uhry853o

uhry853o1#

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

  1. class MySingleton {
  2. static final MySingleton value = MySingleton.();
  3. MySingleton._();
  4. }
  5. class MySingletonHelper {
  6. MySingleton get value => MySingleton.value;
  7. }

字符串
或者使用@visibleForTesting的另一种方式,限制是单例值不能是final,写访问只受DartAnalyzer限制,而不是编译器(我不认为这是一个严重的限制):

  1. import 'package:meta/meta.dart';
  2. class MySingleton {
  3. static MySingleton _value = MySingleton.();
  4. static MySingleton get value => _value;
  5. @visibleForTesting
  6. static set value(MySingleton val) => _value = val;
  7. MySingleton._();
  8. }

展开查看全部

相关问题