flutter - 如何为 `extending a class` 编写有意义的测试?

标签 flutter unit-testing dart testing constructor

extending a class 编写有意义的测试的正确方法是什么?使用 super 关键字?

class FooBase<T> {
  final T data;
  const FooBase(this.data);
}

class Foo<T> extends FooBase<T> {
  const Foo(T data)
      : super(data);
}

最佳答案

我认为super(data)是将构造函数参数传递给基类的构造函数(我对dart了解不多)。

您只能通过观察其行为来测试是否调用了 super。您必须检查基类构造函数以了解它对参数执行的操作,然后查看是否可以观察是否发生了这种情况(如果可能)。示例:如果基类构造函数将参数分配给可以从外部访问的字段,则可以对正在设置的参数进行断言。这仅在以下情况下有效

  1. 您可以通过测试代码访问该字段。在此上下文中的访问并不意味着直接访问它或通过 getter 访问它。任何观察该字段已设置的方法都应该足够了。
  2. 被测试的类本身没有设置字段(可能无法确定哪个构造函数设置该字段)。

关于flutter - 如何为 `extending a class` 编写有意义的测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66365339/

相关文章:

firebase - 用于 SHA1 的 FlutterFire CLI

javascript - 如何用 Jasmine 部分检查对象

mysql - 在 MySQL 中进行单元测试的最佳工具

unit-testing - 为什么使用内存数据库时此 NamedQuery 不起作用?

dart - 如何使用 flutter 编写按下双后退按钮以退出应用程序

dart - Navigator.push() 的类型无法签名到 onPressed

flutter - 如何将 BottomNavigationBar 与 Navigator 一起使用?

dart - 如何检查对象是否属于实例 `Type` ?

android - Flutter google play 说应用程序已在 Debug模式下登录

flutter - 按下返回主屏幕(登录页面)时,加载图标仍在运行