Flutter 在Dart中进行单元测试时,Mockito存根挂起等待调用
我在Dart中使用Mockito来测试异步代码 我有一个异步调用的类:Flutter 在Dart中进行单元测试时,Mockito存根挂起等待调用,flutter,unit-testing,dart,mockito,mockito-dart,Flutter,Unit Testing,Dart,Mockito,Mockito Dart,我在Dart中使用Mockito来测试异步代码 我有一个异步调用的类: class StorageService { FirebaseStorage _storage; Future<bool> uploadMyImage(MyImage myImage) async { final path = "/${myImage.id}.jpg"; try { await _storage.ref(path).putData(m
class StorageService {
FirebaseStorage _storage;
Future<bool> uploadMyImage(MyImage myImage) async {
final path = "/${myImage.id}.jpg";
try {
await _storage.ref(path).putData(myImage.data);
return true;
} on Exception {
return false;
}
}
}
单元测试从未完成,因为它正在等待等待mockUploadTask
。我怎样才能使它完整
@GenerateMocks([FirebaseStorage, Reference, UploadTask, TaskSnapshot])
void main() {
test('uploadMyImage returns true on successful upload', () async {
// 1. given
final mockFirebaseStorage = MockFirebaseStorage();
final subject = StorageService(firebaseStorage: mockFirebaseStorage);
final myImage = Generators.myImage();
final mockReference = MockReference();
final mockUploadTask = MockUploadTask();
final mockTaskSnapshot = MockTaskSnapshot();
// 2. when
final path = "/${myImage.id}.jpg";
when(mockFirebaseStorage.ref(path)).thenReturn(mockReference);
when(mockReference.putData(myImage.data)).thenAnswer((_) => mockUploadTask);
when(await mockUploadTask).thenAnswer((_) => mockTaskSnapshot);
final result = await subject.uploadMyImage(myImage);
// 3. then
expect(result, true);
});
}