Chr*_*ong 5 flutter flutter-test
目前我正在学习 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: [
]
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
513 次 |
| 最近记录: |