En interaktiv todo-list applikation byggd med React, TypeScript och Vite som demonstrerar omfattande enhetstestning och integrationstestning av React-komponenter.
Denna applikation implementerar en fullständig todo-list med följande funktionalitet:
- Lägga till nya todos med validering
- Markera todos som slutförda/ej slutförda
- Ta bort todos
- Persistent lagring i localStorage
- Responsiv och användarvänlig design
Applikationen består av fyra huvudkomponenter som demonstrerar komponentkommunikation genom props och callbacks:
TodoApp (Huvudcontainer)
- Hanterar global todo-state med useState
- Integrerar med localStorage för persistence
- Koordinerar kommunikation mellan underkomponenter
TodoList (Listcontainer)
- Tar emot todos via props från förälder
- Renderar TodoItem-komponenter dynamiskt
- Hanterar tomma tillstånd
TodoItem (Individuell todo)
- Visar enskilda todos med interaktiva element
- Hanterar toggle/delete-användarinteraktioner
- Kommunicerar med förälder via callbacks
AddTodoForm (Inputformulär)
- Hanterar lokal input-state
- Validerar användarinput (tom text, längd)
- Skickar nya todos via callback
Kör följande kommando för att installera alla beroenden:
npm install
Starta utvecklingsservern:
npm run dev
Applikationen kommer att vara tillgänglig på http://localhost:5173
Bygg applikationen för produktion:
npm run build
Förhandsgranska produktionsbygget:
npm run preview
Denna applikation har 100% testtäckning med omfattande enhetstester och integrationstester.
npm test
npm run test:run
npm run test:ui
npm run coverage
Täckningsrapporten genereras i ./coverage/
mappen. Öppna ./coverage/index.html
i en webbläsare för detaljerad täckningsanalys.
Varje komponent testas isolerat med fokus på:
- Rendering och UI-logik
- State-hantering
- Användarinteraktioner
- Props-hantering
- Validering och felhantering
Tester som verifierar kommunikation mellan komponenter:
- Props-överföring från förälder till barn
- Callback-funktioner från barn till förälder
- Kompletta användararbetsflöden
- State-synkronisering
Strategisk mockning av:
- localStorage-operationer
- Date.now() för konsistenta timestamps
- React DOM rendering (main.tsx)
- Formulärhändelser
- Statements: 100%
- Branches: 100%
- Functions: 100%
- Lines: 100%
Kör ESLint för kodgranskning:
npm run lint
- Frontend: React 19 + TypeScript
- Build Tool: Vite 7
- Testing: Vitest + @testing-library/react
- Coverage: Istanbul
- Linting: ESLint med TypeScript-regler
src/
├── App.tsx # Huvudkomponent med state-hantering
├── main.tsx # Applikationsingång
├── components/
│ ├── TodoList.tsx # Lista-container komponent
│ ├── TodoItem.tsx # Individuell todo-komponent
│ └── AddTodoForm.tsx # Formulärkomponent
└── *.test.tsx # Testfiler för respektive komponenter
└── integration.test.tsx # Integrationstester
- Skriv in en todo i textfältet
- Klicka "Add Todo" eller tryck Enter
- Klicka på checkboxen för att markera som slutförd
- Klicka "Delete" för att ta bort en todo
- Todos sparas automatiskt i localStorage
Detta projekt demonstrerar:
Tekniska färdigheter:
- Moderna React-mönster med hooks
- TypeScript för typsäkerhet
- Omfattande teststrategier
- Komponentarkitektur och state-hantering
Testinsikter:
- Vikten av isolerade enhetstester
- Integration testing för komponentkommunikation
- Strategisk mockning för externa beroenden
- 100% täckning som kvalitetsindikator
Lärdomar:
- Testning från början förbättrar koddesign
- Integration tests fångar verkliga användarscenarier
- Mocking gör tester förutsägbara och snabba
- Komponentarkitektur påverkar testbarhet
Projektet uppfyller alla krav för väl godkänt genom omfattande testning, 100% täckning, strategisk mockning och professionell koddokumentation.