You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

55 lines
2.0 KiB

import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart';
import 'package:eaimar/data/services/id_verify_service.dart';
/// 守住「重新登录后显示未认证」那个 bug 的两个成因:
/// 1. 未登录时不该去打接口(打了只会拿到 NoLogin,还把 loaded 留在 false);
/// 2. 登出必须清空状态,否则下一个账号会继承上一个账号的已认证信息。
void main() {
setUp(() {
Get.testMode = true;
Get.put(IdVerifyService());
});
tearDown(Get.reset);
test('未登录时 refresh 不改变状态(不会误标记为已加载)', () async {
final svc = IdVerifyService.to;
// 测试环境下 User 单例未初始化 ⇒ isLoggedIn()==false
await svc.refresh();
expect(svc.loaded.value, isFalse, reason: '未登录不该把状态标记成已加载');
expect(svc.verified.value, isFalse);
});
test('ensureLoaded 在未登录时同样安全', () async {
final svc = IdVerifyService.to;
await svc.ensureLoaded();
expect(svc.loaded.value, isFalse);
});
test('clear 清空全部字段——换账号不能继承上一个账号的实名信息', () {
final svc = IdVerifyService.to;
svc.verified.value = true;
svc.realname.value = '张三';
svc.idcardMask.value = '4304**********8812';
svc.verifyTime.value = 1700000000;
svc.verifiedGender.value = 1;
svc.loaded.value = true;
svc.clear();
expect(svc.verified.value, isFalse);
expect(svc.realname.value, isEmpty);
expect(svc.idcardMask.value, isEmpty);
expect(svc.verifyTime.value, 0);
expect(svc.verifiedGender.value, 0);
expect(svc.loaded.value, isFalse, reason: 'loaded 也要清,否则不会重新拉新账号的状态');
});
test('已加载后 ensureLoaded 不重复请求', () async {
final svc = IdVerifyService.to;
svc.loaded.value = true;
await svc.ensureLoaded(); // 不该抛,也不该改状态
expect(svc.loaded.value, isTrue);
});
}