这是我第一次尝试测试我的Cubit
课程,所以请耐心等待,因为我在尝试了几个小时后完全没有想法。
我正在尝试测试一个看起来像这样的简单肘部:
@injectable
class ResetPasswordCubit extends Cubit<ResetPasswordState> {
ResetPasswordCubit() : super(ResetPasswordInitial());
void attemptPasswordReset({required ResetPasswordParams params}) async {
emit(ResetPasswordLoading());
emit(ResetPasswordLoaded());
}
}
我要做的就是验证这两个状态是否按顺序发出。根据文档,有几种方法可以做到这一点,但我什至不确定应该使用哪一种。我更喜欢使用单元测试,虽然我都试过了。这是我所拥有的:
class MockResetPasswordCubit extends MockCubit<ResetPasswordState>
implements ResetPasswordCubit {}
@GenerateMocks([ResetPassword])
void main() {
late MockResetPassword mockResetPassword;
late MockResetPasswordCubit cubit;
late ResetPasswordParams params;
setUp(() {
mockResetPassword = MockResetPassword();
cubit = MockResetPasswordCubit();
params = const ResetPasswordParams(
pin: "1234", password: "hello", confirmPassword: "hello");
when(mockResetPassword.call(params))
.thenAnswer((_) async => const Right(ResetPasswordResult.validated));
});
blocTest<ResetPasswordCubit, ResetPasswordState>(
'when attempt to validate password is made then loading state is emitted',
build: () => cubit,
act: (cubit) => cubit.attemptPasswordReset(params: params),
expect: () => [ResetPasswordLoading(), ResetPasswordLoaded()]);
}
这是显示的错误:
预期:['ResetPasswordLoading' 实例,'ResetPasswordLoaded' 实例]
实际:[]
其中:位置 [0] 是 [],比预期短
我真的没有想法,所以希望有人能纠正我。谢谢。