我已经创建了一个类作为单例,制作了一个静态方法来获取该类的示例,但是在单元测试中我不能模拟该类。在dart中有没有其他方法可以只创建一个单独的示例,并且可以轻松地进行单元测试。
uhry853o1#
有不同的方式取决于你的确切要求是什么。你可以使用一个额外的类来访问单例,在那里你可以创建多个示例,同时仍然保证它允许访问的值将是单例:
class MySingleton { static final MySingleton value = MySingleton.(); MySingleton._(); } class MySingletonHelper { MySingleton get value => MySingleton.value; }
字符串或者使用@visibleForTesting的另一种方式,限制是单例值不能是final,写访问只受DartAnalyzer限制,而不是编译器(我不认为这是一个严重的限制):
@visibleForTesting
final
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._(); }
型
1条答案
按热度按时间uhry853o1#
有不同的方式取决于你的确切要求是什么。
你可以使用一个额外的类来访问单例,在那里你可以创建多个示例,同时仍然保证它允许访问的值将是单例:
字符串
或者使用
@visibleForTesting
的另一种方式,限制是单例值不能是final
,写访问只受DartAnalyzer限制,而不是编译器(我不认为这是一个严重的限制):型