技能 javascript-testing-patterns
🧪

javascript-testing-patterns

安全

إتقان أنماط اختبار JavaScript

也可从以下获取: wshobson

كتابة الاختبارات أمر صعب. توفر هذه المهارة أنماطاً مثبتة وأمثلة للاختبارات الوحدوية والتكاملية واختبارات end-to-end باستخدام Jest و Vitest و Testing Library حتى تتمكن من بناء مجموعات اختبار موثوقة بسرعة.

支持: Claude Codex Code(CC)
📊 71 充足
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“javascript-testing-patterns”。 اكتب اختبارات وحدوية لدالة add التي تأخذ رقمين وتعيد مجموعهما

预期结果:

  • ```typescript
  • import { describe, it, expect } from 'vitest';
  • import { add } from './calculator';
  •  
  • describe('add', () => {
  • it('should add two positive numbers', () => {
  • expect(add(2, 3)).toBe(5);
  • });
  •  
  • it('should add negative numbers', () => {
  • expect(add(-2, -3)).toBe(-5);
  • });
  •  
  • it('should handle zero', () => {
  • expect(add(0, 5)).toBe(5);
  • });
  • });
  • ```

正在使用“javascript-testing-patterns”。 أنشئ اختباراً لمكون نموذج مستخدم يتحقق من صحة البريد الإلكتروني ويرسل البيانات

预期结果:

  • ```typescript
  • import { render, screen, fireEvent } from '@testing-library/react';
  • import { describe, it, expect, vi } from 'vitest';
  • import { UserForm } from './UserForm';
  •  
  • describe('UserForm', () => {
  • it('should show validation error for invalid email', () => {
  • render(<UserForm onSubmit={vi.fn()} />);
  • fireEvent.change(screen.getByTestId('email-input'), {
  • target: { value: 'invalid-email' }
  • });
  • fireEvent.click(screen.getByRole('button', { name: 'Submit' }));
  • expect(screen.getByText('Invalid email')).toBeInTheDocument();
  • });
  •  
  • it('should call onSubmit with form data', () => {
  • const onSubmit = vi.fn();
  • render(<UserForm onSubmit={onSubmit} />);
  • fireEvent.change(screen.getByTestId('name-input'), {
  • target: { value: 'John Doe' }
  • });
  • fireEvent.change(screen.getByTestId('email-input'), {
  • target: { value: 'john@example.com' }
  • });
  • fireEvent.click(screen.getByRole('button', { name: 'Submit' }));
  • expect(onSubmit).toHaveBeenCalledWith({
  • name: 'John Doe',
  • email: 'john@example.com'
  • });
  • });
  • });
  • ```

安全审计

安全
v1 • 2/25/2026

All 145 static findings are false positives. The detected patterns exist only in code examples within markdown documentation files, not in executable code. The skill provides educational content about testing patterns with code samples demonstrating legitimate testing practices including mock setup, API testing, email service testing, and database integration testing. No executable code, no security risks.

2
已扫描文件
1,063
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
31
社区
100
安全
91
规范符合性

你能构建什么

إعداد اختبار لمشروع جديد

المطورون الذين يبدأون مشروع JavaScript/TypeScript جديد ويحتاجون إلى إنشاء بنية اختبار تحتية من الصفر مع تكوين الإطار المناسب وهيكل المجلدات وتكامل CI/CD.

إضافة اختبارات لـ Codebase موجود

الفرق التي تحافظ على تطبيقات قديمة أو غير مختبرة وتحتاج إلى إدخال الاختبارات تدريجياً للدوال و APIs والمكونات الموجودة دون كسر الوظائف الحالية.

تحسين تغطية الاختبار

المطورون الذين يسعون لزيادة تغطية الكود وتحسين جودة الاختبار من خلال تعلم أنماط mocking المتقدمة و fixture factories واستراتيجيات اختبار التكامل.

试试这些提示

اختبار وحدوي أساسي
اكتب اختبارات وحدوية لدالة تقوم بـ [وصف ما تفعله الدالة]. ضمّن اختبارات لحالات النجاح والتعامل مع الأخطاء.
اختبار مكون مع Testing Library
أنشئ اختبارات React Testing Library لمكون يقوم بـ [وصف سلوك المكون]. اختبر تفاعلات المستخدم وإرسال النماذج وحالات الأخطاء.
اختبار تكاملي لـ API
اكتب اختبارات تكاملية لنقطة نهاية REST API تقوم بـ [وصف وظيفة نقطة النهاية]. ضمّن إعداد قاعدة البيانات والمصادقة والتنظيف باستخدام supertest.
Mock الاعتماديات الخارجية
أنشئ اختبارات لـ [service/class] تستخدم mock للاعتماديات الخارجية بما في ذلك [سرد الاعتماديات]. استخدم حقن الاعتمادية وأنماط vi.mock.

最佳实践

  • اتبع نمط Arrange-Act-Assert (AAA) في كل اختبار للحصول على هيكل ووضوح في القراءة
  • اختبر السلوك وتفاعلات المستخدم بدلاً من تفاصيل التطبيق لجعل الاختبارات مرنة عند إعادة الهيكلة
  • استخدم hooks مثل beforeEach و afterEach للإعداد والتنظيف للحفاظ على عزل الاختبارات ومنع التلوث

避免

  • اختبار تفاصيل التطبيق مثل استدعاءات الدوال الداخلية أو حالة المكون بدلاً من السلوك القابل للملاحظة
  • كتابة اختبارات هشة تنكسر عند إعادة هيكلة الكود بينما يبقى السلوك دون تغيير
  • إنشاء إعدادات اختبار معقدة للغاية مع الكثير من mocks التي تجعل الاختبارات صعبة الفهم والصيانة

常见问题

هل يجب استخدام Jest أم Vitest؟
Vitest أسرع ويعمل بشكل أفضل مع مشاريع Vite. Jest أكثر نضجاً ولديه انتشار أوسع. اختر Vitest إذا كنت تستخدم Vite، وإلا فإن Jest خيار آمن.
كيف أختبر الكود الذي يستخدم APIs خارجية؟
قم بعمل mock لاستدعاءات API الخارجية باستخدام vi.mock() أو حقن الاعتمادية. هذا يحافظ على الاختبارات سريعة وموثوقة ومستقلة عن الخدمات الخارجية.
ما هي نسبة تغطية الاختبار التي يجب استهدافها؟
استهدف 80% تغطية كهدف عام. ركّز على تغطية منطق العمل الحاسم ومسارات الأخطاء بدلاً من مطاردة 100% تغطية.
هل يجب اختبار الدوال الخاصة؟
لا. اختبر السلوك العام فقط. إذا كانت الدوال الخاصة تحتاج إلى اختبار، ففكّر في إعادة هيكلتها إلى وحدات منفصلة قابلة للاختبار.
كيف أتعامل مع اختبارات قاعدة البيانات؟
استخدم قاعدة بيانات اختبار منفصلة ونظّف البيانات بين الاختبارات باستخدام beforeEach. فكّر في استخدام المعاملات لـ rollback أسرع بدلاً من truncating الجداول.
ما الفرق بين الاختبارات الوحدوية واختبارات التكامل؟
الاختبارات الوحدوية تعزل الدوال أو الكلاسات الفردية. اختبارات التكامل تتحقق من عمل مكونات متعددة معاً، بما في ذلك قواعد البيانات و APIs.