目前,我正在关注Resocoder的教程(DDD课程)。在本课程中,有一个名为i_auth_facade.dart的抽象类,其中包含一个函数getSignedInUser。
我已经模拟了该类,并尝试从getSignedInUser方法获取有效的用户选项,但结果始终为null。
此外,当我尝试执行AuthBloc的authCheckRequested方法时,该方法随后在后台调用getSignedInUser方法,我返回null。
我必须对Mockito出错,因为存根似乎不起作用。
有人能指出我正确的方向,为什么我不找回optionOf(User),而是返回null吗?
import 'package:bloc_test/bloc_test.dart';
import 'package:dartz/dartz.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:teach_mob_student/application/auth/auth_bloc.dart';
import 'package:teach_mob_student/domain/auth/i_auth_facade.dart';
import 'package:teach_mob_student/domain/auth/user.dart';
import 'package:teach_mob_student/domain/auth/value_objects.dart';
import 'package:teach_mob_student/domain/core/value_objects.dart';
class MockIAuthFacade extends Mock implements IAuthFacade {}
void main() {
final tValidUser = User(
id: UniqueId(),
name: StringSingleLine('Test User'),
emailAddress: EmailAddress('test@user.com'));
test('Should return valid option of user', () async {
// This is to check, if optionOf actually returns a user --> Yes it does
Option<User> tDirectResult = optionOf<User>(tValidUser);
// Here I stub the getSignedInUser method. If it is executed, I want to receive a valid user.
when(MockIAuthFacade()
.getSignedInUser()
).thenAnswer((_) async => Future.value(optionOf<User>(tValidUser)));
// Here I execute the method, and I would expect to get Future<Option<User>> back, but I only get back null.
final facade = MockIAuthFacade();
Option<User> tStubbedResult = await facade.getSignedInUser();
print(tDirectResult);
print(tStubbedResult);
});
// Here I do the same, but I execute the authCheckRequested method of the AuthBloc, which executes the
// getSignedInUser method. Also here I get back null as result.
blocTest('Should return valid option of user.',
build: () async {
when(MockIAuthFacade()
.getSignedInUser()
).thenAnswer((_) async => Future.value(optionOf<User>(tValidUser)));
return AuthBloc(MockIAuthFacade());
},
act: (bloc) async {
bloc.add(AuthEvent.authCheckRequested());
},
expect: [
]
);
}