| Propriété | Valeur |
|---|---|
| Catégorie | Usage (JustDummies.Usage) |
| Sévérité | 🔴 Erreur |
| Activée par défaut | Oui |
Un générateur est une recette immuable, pas une valeur — et aucun générateur JustDummies ne surcharge ToString(). Le rendre sous forme de texte produit donc le nom de type CLR du constructeur : $"{Any.String()}" donne littéralement la chaîne "JustDummies.AnyString".
Cette chaîne est non vide, plausible, et identique à chaque exécution. Elle se propage dans le message, la charge utile ou l’objet valeur sous test comme s’il s’agissait d’une valeur arbitraire : le test passe au vert tout en exerçant une constante qui ne varie pour personne — exactement l’inverse de la raison d’être d’Any. Rien n’avertit : la conversion est du C# légal.
Matérialisez la valeur avec Generate().
Non conforme
string message = $"order {Any.String().NonEmpty()}"; // JD005 : « order JustDummies.AnyString »
string reference = "ORD-" + Any.String().NonEmpty(); // JD005
string quantity = Any.Int32().Positive().ToString(); // JD005 : « JustDummies.AnyInt32 »
Conforme
string message = $"order {Any.String().NonEmpty().Generate()}";
string reference = "ORD-" + Any.String().NonEmpty().Generate();
string quantity = Any.Int32().Positive().Generate().ToString();
Ce qui n’est pas signalé
- Une valeur générée —
Generate()retourne la valeur, et la rendre est précisément l’objectif. - Un générateur écrit par le consommateur qui surcharge réellement
ToString(): l’appel se résout vers cette surcharge et non versobject.ToString(), et il est délibérément laissé tranquille. - Une surcharge
ToString(...)prenant un format ou une culture — ce n’est jamaisobject.ToString().