简体   繁体   English

Dartz,颤振测试 - 无法获得未来的正确部分<Either<L, R> &gt;,而不是那个 - Future 的实例<Either<L, R> &gt; 作为实际结果

[英]Dartz, flutter test - Can't get a Right part of Future<Either<L, R>>, instead of that - instance of Future<Either<L, R>> as a actual result

This is my first try to write a test.这是我第一次尝试编写测试。 I use the Dartz package and I don't know how to get just one part as a result of my test.我使用 Dartz 包,但我不知道如何根据我的测试只得到一个部件。 The error is:错误是:

Expected: Right<dynamic, NumberTrivia>:<Right(NumberTrivia(test, 1))> Actual: <Instance of 'Future<Either<Failure, NumberTrivia>>'>预期:Right<dynamic, NumberTrivia>:<Right(NumberTrivia(test, 1))> 实际:<Instance of 'Future<Either<Failure, NumberTrivia>>'>

The function in repository:存储库中的功能:

abstract class NumberTriviaRepository {
  Future<Either<Failure, NumberTrivia>> getConcreteNumberTrivia(int number);
  Future<Either<Failure, NumberTrivia>> getRandomNumberTrivia();
}

The function in usecase:用例中的功能:

class GetConcreteNumberTrivia {
  final NumberTriviaRepository numberTriviaRepository;
  GetConcreteNumberTrivia(this.numberTriviaRepository);

  Future<Either<Failure, NumberTrivia>> execute({
    required int number,
  }) async {
    return await numberTriviaRepository.getConcreteNumberTrivia(number);
  }
}

And the test class:和测试类:

import 'package:dartz/dartz.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:number_trivia/features/number_trivia/domain/entities/number_trivia.dart';
import 'package:number_trivia/features/number_trivia/domain/repositories/number_trivia_repository.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:number_trivia/features/number_trivia/domain/usecases/get_concrete_number_trivia.dart';

import 'get_concrete_number_trivia_test.mocks.dart';

@GenerateMocks([NumberTriviaRepository])
void main() {
  late GetConcreteNumberTrivia usecase;
  late MockNumberTriviaRepository mockNumberTriviaRepository;
  setUp(() {
    mockNumberTriviaRepository = MockNumberTriviaRepository();
    usecase = GetConcreteNumberTrivia(mockNumberTriviaRepository);
  });

  final tNumber = 1;
  final tNumberTrivia = NumberTrivia(text: 'test', number: tNumber);
  test('should get trivia for the number from the repository', () async {
    // arrange
    when(mockNumberTriviaRepository.getConcreteNumberTrivia(tNumber))
        .thenAnswer((_) async => Right(tNumberTrivia));
    // act
    final result = usecase.execute(number: tNumber);
    // assets
    expect(result, Right(tNumberTrivia));
    verify(mockNumberTriviaRepository.getConcreteNumberTrivia(tNumber));
    verifyNoMoreInteractions(mockNumberTriviaRepository);
  });
}

My git with code: https://github.com/VeronikaHaichenko/clean_architecture_education我的 git 代码: https ://github.com/VeronikaHaichenko/clean_architecture_education

The issue coming because usecase.execute(number: tNumber);问题来了,因为usecase.execute(number: tNumber); retuning future, use await before it.重新调整未来,在它之前使用await

// act
final result = await usecase.execute(number: tNumber);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何获得未来的权利<either<error, list<dynamic> &gt;&gt; 在 Flutter? </either<error,> - How to get Right of Future<Either<Error, List<dynamic>>> in Flutter? 与未来一起使用 - Use Either with Future Flutter:我可以调用相同的 Future,首先使用“then()”,然后是“await”,而不会引发竞争条件问题? - Flutter: can l call the same Future, first with "then()" followed by "await", without incurring in race condition issues? Flutter:HTTP Get 返回未来的实例而不是图像导致异常 - Flutter: HTTP Get returns instance of future instead of Image results in Exception Flutter Future 返回未来的实例 - Flutter Future returning instance of future Flutter - '未来的实例<double> ' 而不是数字</double> - Flutter - Instance of 'Future<double>' instead number 如何从 Dart 中的 Either 类型轻松提取 Left 或 Right (Dartz) - How to extract Left or Right easily from Either type in Dart (Dartz) 无法从 Firebase 存储中获取实际的字符串下载 url 并且仅返回“未来”的实例<string> ' 甚至使用 async/await</string> - Can't get actual String download url from Firebase Storage and only returns Instance of 'Future<String>' even using async/await “未来”的实例 <dynamic> &#39;在Flutter - Instance of 'Future<dynamic>' in Flutter 未来虚空的实例 - flutter - Instance of future void - flutter
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM