首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在测试零安全性时遇到了麻烦

我在测试零安全性时遇到了麻烦
EN

Stack Overflow用户
提问于 2022-05-31 23:10:25
回答 2查看 105关注 0票数 1

我试着用dart运行一个测试,并得到以下结果:

类型'Null‘不是'Future>’类型的子类型

login_with_user_test.dart

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
class LoginUser {
  final String user;
  final String password;

  LoginUser({required this.user, required this.password});

  factory LoginUser.empty() {
    return LoginUser(user: '', password: '');
  }
}

errors.dart

代码语言:javascript
复制
abstract class FailureLogin implements Exception {}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-01 18:35:24

下午好!

设法解决,这扩展了模拟是在空安全之前的事情,在空安全之后,这不再起作用。必须使用GenerateMock

类测试

然后在终端中运行代码以生成类模拟

代码语言:javascript
复制
flutter pub run build_runner build
票数 -1
EN

Stack Overflow用户

发布于 2022-05-31 23:26:32

我不太确定,但可能是用Either发布的,您能用result.isRight()重写测试代码吗?如果是工作,请重新检查expect(结果,isA();line )。因为结果可以是右的,也可以是左的,但两者都是类型。

另外,您能检查一下repository.login(user: '', password: '')替换为await repository.login(user: '', password: '')吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72454942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档