Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

principle-test-behavior-not-implementation: listed matchers do not all pass when imports return undefined

Ouverte Adaptée aux débutants
#474 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@Yi-111-a y travaille déjà.

Depuis le 1/10/2026.

  • #476 par @Yi-111-a — ouverte
  • #487 par @lab1207 — ouverte

Évaluation

Difficulté
1/5
Temps estimé
Moins d'une heure
Accessibilité débutants
88/100
Type d'issue
Documentation
Clarté
Clairement spécifiée
Activité
Active
Stack technique
javascript
Domaine
documentation

Piste de recherche

Commencez par pstack/skills/principle-test-behavior-not-implementation/SKILL.md, en particulier les lignes 15-18, et comparez chaque matcher listé avec le comportement indéfini présenté dans l’issue. Mettez à jour l’explication ou le regroupement afin que l’affirmation de comportement indéfini ne s’applique qu’aux matcher qui réussissent effectivement, tandis que les assertions faibles mais non-vacuous soient décrites avec précision.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Observed at commit 2eb7ed4613cfc8f098dfe464a23680ea44d84c5e: pstack/skills/principle-test-behavior-not-implementation/SKILL.md lines 15-18.

The skill's check is "would the test still pass if every function it imports returned undefined?" and it lists, as "Five shapes that still pass when every imported function returns undefined", assertions such as:

  • toBeDefined, toBeTruthy, toBeInstanceOf, toBeGreaterThan(0)
  • toEqual([]), toHaveLength(0)
Problem

Several of these do not pass when the value is undefined:

expect(undefined).toBeDefined()        // fails
expect(undefined).toBeTruthy()         // fails
expect(undefined).toBeInstanceOf(Foo)  // fails
expect(undefined).toBeGreaterThan(0)   // throws (received value must be a number)
expect(undefined).toEqual([])          // fails
expect(undefined).toHaveLength(0)      // throws (received value must have a length property)

They are weak assertions, but the stated reason ("still passes when every import returns undefined") is false for them, which can lead an agent following the rule to delete tests that do fail when the function breaks, or to distrust the check. (not.toThrow, toBeUndefined, not.toHaveBeenCalled and a missing expect do pass.)

Suggested fix

Describe the principle by what the test can detect rather than by matcher name: ask whether the assertion would still pass if the function returned a wrong but plausible value (an empty array, true, a different object). Either remove the matchers that fail on undefined from the list, or move them to a separate "weak but not vacuous" group with the accurate explanation, and keep the undefined claim only for the matchers that truly pass.

Langage dominant
TypeScript
Étoiles
10.8k
Forks
1k
Merge moyen
12 h 59 min
PR mergées (30 j)
107

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de cursor/plugins

Toutes les issues de cursor/plugins

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.