我试着用dart运行一个测试,并得到以下结果:
类型'Null‘不是'Future>’类型的子类型
login_with_user_test.dart
import 'package:dartz/dartz.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:ola_desktop/modules/login/domain/entities/login_user.dart';
import 'package:ola_desktop/modules/login/domain/repositories/login_repository.dart';
import 'package:ola_desktop/modules/login/domain/usecases/login_with_user.dart';
class LoginRepositoryMock extends Mock implements LoginRepository {}
main() {
final repository = LoginRepositoryMock();
final usecase = LoginWithUserImpl(repository);
test('Deve retornar um LoginUser', () async {
// ignore: prefer_const_constructors
when(repository.login(user: '', password: ''))
.thenAnswer((_) async => Right(LoginUser.empty()));
final result = await usecase("gabriel.ribeiro", "123456");
expect(result, isA<LoginUser>());
});
}login_repository.dart
import 'package:dartz/dartz.dart';
import '../entities/login_user.dart';
import '../errors/errors.dart';
abstract class LoginRepository {
Future<Either<FailureLogin, LoginUser>> login(
{required String user, required String password});
}login_with_user.dart
import 'package:dartz/dartz.dart';
import '../entities/login_user.dart';
import '../errors/errors.dart';
import '../repositories/login_repository.dart';
abstract class LoginWithUser {
Future<Either<FailureLogin, LoginUser>> call(String user, String password);
}
class LoginWithUserImpl implements LoginWithUser {
final LoginRepository repository;
LoginWithUserImpl(this.repository);
@override
Future<Either<FailureLogin, LoginUser>> call(String user, String password) {
return repository.login(user: user, password: password);
}
}login_user.dart
class LoginUser {
final String user;
final String password;
LoginUser({required this.user, required this.password});
factory LoginUser.empty() {
return LoginUser(user: '', password: '');
}
}errors.dart
abstract class FailureLogin implements Exception {}


发布于 2022-06-01 18:35:24
下午好!
设法解决,这扩展了模拟是在空安全之前的事情,在空安全之后,这不再起作用。必须使用GenerateMock
类测试

然后在终端中运行代码以生成类模拟。
flutter pub run build_runner build发布于 2022-05-31 23:26:32
我不太确定,但可能是用Either发布的,您能用result.isRight()重写测试代码吗?如果是工作,请重新检查expect(结果,isA();line )。因为结果可以是右的,也可以是左的,但两者都是类型。
另外,您能检查一下repository.login(user: '', password: '')替换为await repository.login(user: '', password: '')吗?
https://stackoverflow.com/questions/72454942
复制相似问题