【发布时间】:2019-07-30 03:28:06
【问题描述】:
我已经创建了一个单例类,创建了一个静态方法来获取该类的实例,但是在单元测试时我无法模拟该类。飞镖中是否有其他方法可以只创建一个实例并且可以轻松进行单元测试。
【问题讨论】:
标签: dart flutter dart-pub flutter-test
我已经创建了一个单例类,创建了一个静态方法来获取该类的实例,但是在单元测试时我无法模拟该类。飞镖中是否有其他方法可以只创建一个实例并且可以轻松进行单元测试。
【问题讨论】:
标签: dart flutter dart-pub flutter-test
根据您的具体要求,有不同的方法。
您可以使用额外的类来访问单例,您可以在其中创建多个实例,同时仍保证它允许访问的值将是单例:
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._();
}
【讨论】: