我想围绕我编写的抽象Uploader
类编写一些单元测试:
abstract class Uploader {
Future<StreamSubscription> subscribe(String filename, void onEvent(Event event));
}
class FirebaseUploader implements Uploader {
Future<StreamSubscription> subscribe(String filename, void onEvent(Event event)) async {
String userId = await auth.signInAnonymously();
DatabaseReference databaseReference = _databaseReference(userId, filename);
return databaseReference.onValue.listen(onEvent);
}
}
class UploaderMock implements Uploader {
Future<StreamSubscription> subscribe(String filename, void onEvent(Event event)) async {
Event event = new Event(); // The class 'Event' doesn't have a default constructor.
return Future.value(null);
}
}
问题是,我无法解决如何在Event
中创建自己的UploaderMock
,因此我可以致电onEvent
。如果我尝试创建new Event()
,则会收到以下错误:
课程&#39;活动&#39;没有默认构造函数。
这是因为Event
有一个私有构造函数:
Event._(this._data) : snapshot = new DataSnapshot._(_data['snapshot']);
这对生产有意义,但它并不适用于测试。
有什么想法吗?如何测试使用StreamSubscription
的代码?
答案 0 :(得分:1)
您可以在自定义类上实现 Event
。
class Bar {
Bar._() {}
}
class Foo implements Bar {
Foo();
}