fix: أخطاء «الصفر الصادق» + عزل حالة ioredis-mock في الاختبارات
أول تشغيل فعلي للاختبارات على السيرفر كشف خطأين حقيقيين في الكود، لا في
الاختبارات:
- RatingAggregateService.get: البذر يكتب count='0' لهدف بلا تقييمات، و'0'
نصٌّ صادق في JS — ففحص !h.count لا يمسكه وكانت ترجع {avg:0,count:0} بدل
null. صارت مقارنة رقمية.
- DriverLocationService.readHash: نفس الفخ — خط عرض '0' إحداثي صالح لكنه
نصٌّ صادق؛ صار الفحص == null.
الاختبارات:
- ioredis-mock يشارك مخزناً واحداً بين النسخ رغم new RedisMock() — أُضيف
flushall في كل beforeEach (تسرّبت مفاتيح بين الاختبارات).
- ioredis-mock لا ينفّذ geoadd داخل multi() ولا redis.call، فلا يمكن اختبار
فهرس GEO به: صار MatchingService ضعفاً مزيّفاً في اختبارات المواقع،
والتحقق ينصبّ على منطق العتبات. سلوك GEO الحقيقي يُتحقَّق على السيرفر.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
17c111a8f9
commit
da37dffa44
+4
-1
@@ -5,8 +5,11 @@ describe('CacheService', () => {
|
||||
let redis: any;
|
||||
let cache: CacheService;
|
||||
|
||||
beforeEach(() => {
|
||||
// ioredis-mock يشارك مخزناً واحداً بين النسخ ذات الإعدادات نفسها —
|
||||
// بلا flushall تتسرّب مفاتيح اختبار إلى الذي يليه.
|
||||
beforeEach(async () => {
|
||||
redis = new RedisMock({ keyPrefix: 'tripz:' });
|
||||
await redis.flushall();
|
||||
cache = new CacheService(redis);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user