【问题标题】:how to write a meaningful test for `extending a class`?如何为“扩展课程”编写有意义的测试?
【发布时间】:2021-02-25 09:00:39
【问题描述】:
使用super 关键字为extending a class 编写有意义的测试的正确方法是什么?
class FooBase<T> {
final T data;
const FooBase(this.data);
}
class Foo<T> extends FooBase<T> {
const Foo(T data)
: super(data);
}
【问题讨论】:
标签:
flutter
unit-testing
dart
testing
constructor
【解决方案1】:
我想super(data) 是将构造函数参数传递给基类的构造函数(我对 dart 了解不多)。
您只能通过观察其行为来测试是否调用了 super。您必须检查基类构造函数以了解它对参数所做的事情,然后查看是否可以观察是否发生了这种情况(如果可能)。示例:如果基类构造函数将参数分配给您可以从外部访问的字段,您可以断言正在设置的参数。这仅适用于
- 您可以从测试代码访问该字段。 访问 在此上下文中并不意味着直接或通过 getter 访问它。任何观察该字段已设置的方法都应该足够了。
- 被测类本身没有设置字段(可能无法确定哪个构造函数设置了该字段)。