当前位置: 首页 > 知识库问答 >
问题:

不能在《颤栗》中模仿独生子女课程

羊渝
2023-03-14

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

共有1个答案

西门高歌
2023-03-14


您可以使用一个额外的类来访问单例,在那里您可以创建多个实例,同时仍然保证它允许访问的值将是单例:

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._();
}
 类似资料:
  • 我不知道我的代码出了什么问题,我的静态方法都不能被 Mockito 嘲笑...... 我检查了几个小时,似乎我的代码没有任何错误。 下面是依赖性: 下面是静态方法: 下面是测试类: 运行测试后,我得到了这个异常:

  • 问题内容: 我该如何与正在测试的班级中的Mockito其他班级进行模拟? 例如: MyClass.java 任何东西PerformerClass.java 并测试: 我是否可以欺骗以排除不必要的逻辑?我可以重写方法来简单地返回还是? 为什么指定Mockito,因为在Robolectric进行Android测试时需要它。 问题答案: 您可以重构,以便它使用依赖注入。不用让它创建实例,您可以将类的实例

  • 问题内容: 我正在学习SQL,并具有一些类似于以下内容的表: (*表示主键,如果是Customer和Employee,则既是PK又是返回给Person的FK) Customer和Employee都是Person的类型,我想确保在将记录插入Person时,也必须将记录插入EITHER Customer或Employee,但不能同时插入两者。在此示例的限制范围内,人员不能同时是雇员和客户。 有人告诉我

  • 我有一个关于嘲笑的问题。在kotlin中,当您使用Mockito时,您可以: 或 有没有办法在dart/flutter中做这样的事情?我真的只需要将mock传递给某个函数并忘记,为什么我必须创建对象并使用Mock类扩展它? 有没有其他的图书馆可以帮助解决这个问题?

  • 问题内容: 有两个SQL表: 我想用单个查询从Parents表中选择每一行,并从Childs表中为具有关系“ parent”-“ id”值和最大“ feature”列值的每一行选择一个查询。在此示例中,结果应为: 其中p =父表,c =子表 我试图离开外部联接和GROUP BY,但是MSSQL Express告诉我,使用GROUP BY进行查询需要在每个非Groupped字段上使用聚合函数。而且我

  • 问题内容: 我正在使用JavaScript。我想存储具有以下属性的 唯一 ,无序字符串值的列表: 快速询问“列表中是否有A”的方法? 一种快速的方法(如果列表中存在A,则从列表中删除A) 一种快速的方法“将A添加到列表(如果尚不存在)”。 我真正想要的是一套。有什么建议以最佳方式模仿JavaScript中的集合吗? 这个问题建议使用Object,其键存储属性,并且所有值都设置为true:这是明智的