我在用无效的安全测试中遇到困难

发布于 2025-02-03 20:31:48 字数 2598 浏览 3 评论 0原文

我正在尝试在DART中进行测试,但我将获得以下返回:

类型的'null'不是类型的子类型'Future< a e< lafurologin,loginuser>>'

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.dart

class LoginUser {
  final String user;
  final String password;

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

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

abstract class FailureLogin implements Exception {}

“

I'm trying to run a test in dart and I'm getting the following return:

type 'Null' is not a subtype of type 'Future<Either<FailureLogin, LoginUser>>'

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 {}

Print explorer folder Lib

Print explorer folder Test

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一影成城 2025-02-10 20:31:48

我不确定,但也许可以通过“ failurologin”,“ loginuser”&gt;您可以使用result.isright()重写测试代码,如果有效,请检查期望(结果,isa(isa());线。因为结果可以是右或向左但要么类型。

另外,您可以检查repository.login(用户:',密码:'')等待repository.login(用户:'',password:'')>

I am not totaly sure but maybe is releated with Either<FailureLogin, LoginUser>, can you rewrite the test codes with result.isRight(), if it is works re check the expect(result, isA()); line. because result can be Right or left but is Either type.

also can you check the repository.login(user: '', password: '') replacing with await repository.login(user: '', password: '')

会发光的星星闪亮亮i 2025-02-10 20:31:48

伟大的下午!

设法解决,这扩展了模拟是nullsafety之前的事
nullsafety之后,这不再起作用。必须使用generatemock

类测试

“在此处输入图像说明”

然后我在终端中运行代码以生成类 mocks

flutter pub run build_runner build

Great afternoon!

Manage to solve, this extends Mock is thing before nullsafety
after nullsafety this no longer works. Had to use GenerateMock

class test

enter image description here

Then I ran the code in the terminal to generate class mocks:

flutter pub run build_runner build
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文