我想围绕一个抽象的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);
}
}
问题是,我不知道如何在我的UploaderMock
中创建我自己的Event
,所以我可以调用onEvent
。如果我试图创建一个new Event()
,我会得到下面的错误:
- 类别'Event'没有预设建构函式。*
这是因为Event
有一个private构造函数:
Event._(this._data) : snapshot = new DataSnapshot._(_data['snapshot']);
这对于生产是有意义的,但对于测试却不起作用。
有什么想法吗?我如何测试使用StreamSubscription
的代码?
2条答案
按热度按时间mzillmmw1#
您可以在自定义类上 implements
Event
。mepcadol2#
您不能这样做,但是您可以将它们设置为公共的,并使用@visibleForTesting对其进行注解,以便在从不在同一个库或测试中的代码访问它们时获得DartAnalyzer警告。
如何在Flutter中测试私有函数/方法?