felangel / mocktail

A mock library for Dart inspired by mockito
https://pub.dev/packages/mocktail
MIT License
588 stars 80 forks source link

type 'Null' is not a subtype of type 'Entity' #230

Closed EhiltonKazuo closed 4 months ago

EhiltonKazuo commented 4 months ago

Describe the bug When i use two parameters (internal and external) the stub can't track the result and returns this error:

type 'Null' is not a subtype of type 'Entity'

Follow this example

To Reproduce

import 'package:equatable/equatable.dart';
import 'package:mocktail/mocktail.dart';
import 'package:test/test.dart';

class UsecaseParams {
  final double value;

  UsecaseParams(this.value);
}

class PresenterParams {
  final double value;

  PresenterParams(this.value);
}

class Entity extends Equatable {
  final double value;

  const Entity({required this.value});

  @override
  List<Object?> get props => [value];
}

abstract interface class Usecase {
  Entity call(UsecaseParams params);
}

class Presenter {
  final Usecase usecase;

  Presenter(this.usecase);

  void call(PresenterParams params) {
    usecase(UsecaseParams(params.value));
  }
}

class UsecaseMock extends Mock implements Usecase {}

void main() {
  late Presenter sut;
  late UsecaseMock usecase;
  late double value;

  setUp(() {
    usecase = UsecaseMock();
    sut = Presenter(usecase);
    value = 10;
  });

  test('Should call Usecase with correct values', () {
    when(() => usecase(UsecaseParams(value)))
        .thenReturn(const Entity(value: 10));

    sut(PresenterParams(value));

    verify(() => usecase(UsecaseParams(value))).called(1);
  });
}