MetaMask / MetaMask/core

Improve unit tests

Offen
#413 0 Kommentare 3 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

team-wallet-framework wf-test-quality-improvement
Vorherrschende Sprache
TypeScript
Sterne
413
Forks
308
Ø Merge
1 T. 4 Std.
Gemergte PRs (30 T.)
253

Beschreibung

This is a tracking issue for improving unit tests in various ways.

Related issues:

- #1
- #744
- #745
- #746
- #748
- #493
- #749
- #750
- #743

Some general advice: writing unit tests should be easy. They may be verbose and time consuming to write, but they should be easy. If it's not easy, change the API under test to make it easy.

Many of the APIs in this repository make unit testing difficult. Your time is better spent improving the API first and writing simple unit tests, rather than struggling to write complex tests for a complex API. Consider ways to reduce the API surface, reduce dependencies, inject dependencies to simplify stubbing, and move complex functionality into separate modules.

Tracker by module:

Check off each module as they are audited for each of the criteria outlined above.

- [ ] ./src/announcement/AnnouncementController.test.ts
- [ ] ./src/permissions/Caveat.test.ts
- [ ] ./src/permissions/PermissionController.test.ts
- [ ] ./src/permissions/rpc-methods/requestPermissions.test.ts
- [ ] ./src/permissions/rpc-methods/getPermissions.test.ts
- [ ] ./src/permissions/errors.test.ts
- [ ] ./src/permissions/Permission.test.ts
- [ ] ./src/keyring/KeyringController.test.ts
- [ ] ./src/notification/NotificationController.test.ts
- [ ] ./src/third-party/EnsController.test.ts
- [ ] ./src/third-party/PhishingController.test.ts
- [ ] ./src/BaseControllerV2.test.ts
- [ ] ./src/message-manager/MessageManager.test.ts
- [ ] ./src/message-manager/AbstractMessageManager.test.ts
- [ ] ./src/message-manager/PersonalMessageManager.test.ts
- [ ] ./src/message-manager/TypedMessageManager.test.ts
- [ ] ./src/assets/AccountTrackerController.test.ts
- [ ] ./src/assets/AssetsContractController.test.ts
- [ ] ./src/assets/NftController.test.ts
- [ ] ./src/assets/assetsUtil.test.ts
- [ ] ./src/assets/CurrencyRateController.test.ts
- [ ] ./src/assets/TokenBalancesController.test.ts
- [ ] ./src/assets/TokenListController.test.ts
- [ ] ./src/assets/TokenDetectionController.test.ts
- [ ] ./src/assets/NftDetectionController.test.ts
- [ ] ./src/assets/TokensController.test.ts
- [ ] ./src/assets/TokenRatesController.test.ts
- [ ] ./src/assets/Standards/NftStandards/ERC721/ERC721Standard.test.ts
- [ ] ./src/assets/Standards/NftStandards/ERC1155/ERC1155Standard.test.ts
- [ ] ./src/assets/Standards/ERC20Standard.test.ts
- [ ] ./src/user/AddressBookController.test.ts
- [ ] ./src/user/PreferencesController.test.ts
- [ ] ./src/subject-metadata/SubjectMetadataController.test.ts
- [ ] ./src/network/NetworkController.test.ts
- [ ] ./src/ControllerMessenger.test.ts
- [ ] ./src/ratelimit/RateLimitController.test.ts
- [ ] ./src/gas/fetchGasEstimatesViaEthFeeHistory.test.ts
- [ ] ./src/gas/fetchGasEstimatesViaEthFeeHistory/calculateGasFeeEstimatesForPriorityLevels.test.ts
- [ ] ./src/gas/gas-util.test.ts
- [ ] ./src/gas/determineGasFeeCalculations.test.ts
- [ ] ./src/gas/fetchBlockFeeHistory.test.ts
- [ ] ./src/gas/GasFeeController.test.ts
- [ ] ./src/BaseController.test.ts
- [ ] ./src/ComposableController.test.ts
- [ ] ./src/transaction/TransactionController.test.ts
- [ ] ./src/util.test.ts
- [ ] ./src/apis/crypto-compare.test.ts
- [ ] ./src/apis/token-service.test.ts
- [ ] ./src/approval/ApprovalController.test.ts

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, eine nicht abgehakte Testdatei aus dem Modul-Tracker auszuwählen, zum Beispiel src/announcement/AnnouncementController.test.ts, und prüfe ihre API, Abhängigkeiten, Stubs und Testkomplexität anhand der Vorgaben des Issues. Lies die zugehörigen Issues, um den Umfang zu klären, bevor du etwas änderst; erledigt ist die Aufgabe, wenn das ausgewählte Modul geprüft wurde und sein Kontrollkästchen als abgeschlossen markiert werden kann.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
testing-qa
Issue-Typ
Refactoring
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
20/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.