【发布时间】:2021-10-20 21:42:26
【问题描述】:
我正在通过以下视频在 TDD Clean Architecture 中实现颤振项目:https://www.youtube.com/watch?v=lPkWX8xFthE&t=1s
我的代码:
class MockNumberTriviaRepository extends Mock
implements NumberTriviaRepository {}
void main() {
late MockNumberTriviaRepository mockNumberTriviaRepository;
late GetConcreteNumberTrivia usecase;
setUp(() {
mockNumberTriviaRepository = MockNumberTriviaRepository();
usecase = GetConcreteNumberTrivia(mockNumberTriviaRepository);
});
final tNumber = 1;
final tNumberTrivia = NumberTrivia(text: 'test', number: 1);
test(
'should get trivia for the number from the repository',
() async {
//arrange
when( mockNumberTriviaRepository.getConcreteNumberTrivia(1)).thenAnswer((_) async {
return Right(tNumberTrivia);
});
//act
final result = await usecase.execute(number: 10);
//assert
expect(result, Right(tNumberTrivia));
verify(mockNumberTriviaRepository.getConcreteNumberTrivia(tNumber));
verifyNoMoreInteractions(mockNumberTriviaRepository);
},
);
}
运行测试时,结果总是如下
package:number_trivia/features/number_trivia/domain/repositories/number_trivia_repository.dart 7:41 MockNumberTriviaRepository.getConcreteNumberTrivia
test\features\number_trivia\domain\usecases\get_concrete_number_trivia_test.dart 27:40 main.<fn>
test\features\number_trivia\domain\usecases\get_concrete_number_trivia_test.dart 25:5 main.<fn>
type 'Null' is not a subtype of type 'Future<Either<Failure, NumberTrivia>>'
这里显示错误:
abstract class NumberTriviaRepository{
Future<Either<Failure, NumberTrivia>> getConcreteNumberTrivia(int number);
}
class GetConcreteNumberTrivia {
final NumberTriviaRepository repository;
GetConcreteNumberTrivia(this.repository);
Future<Either<Failure, NumberTrivia>> execute({required int number}) async {
return await repository.getConcreteNumberTrivia(number);
}
}
请给我一些前进的解决方案。
【问题讨论】:
标签: flutter testing tdd flutter-test clean-architecture