Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在Dart中进行单元测试时,Mockito存根挂起等待调用_Flutter_Unit Testing_Dart_Mockito_Mockito Dart - Fatal编程技术网

Flutter 在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

我在Dart中使用Mockito来测试异步代码

我有一个异步调用的类:

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);
  });
}