Wie schreibe ich Komponententests, um die Logik im Yup-Schema zu überprüfen?JavaScript

Javascript-Forum
Guest
 Wie schreibe ich Komponententests, um die Logik im Yup-Schema zu überprüfen?

Post by Guest »

Ich habe einige nicht triviale Validierungsregeln für eine Vue-App, die VeeValidate, Yup und Vitest verwendet. Ich würde gerne Unit-Tests für mein Yup-Schema schreiben, aber die Beispiele, die ich gesehen habe, beinhalten die Verwendung undokumentierter APIs (zumindest aus der Sicht der offiziellen Dokumentation auf GitHub). Jedes Mal, wenn ich versuche, nach Möglichkeiten zum Testen von Yup-Validierungen zu suchen, verweise ich auf die Methode test() (Quelle), bei der es sich offenbar eher um eine benutzerdefinierte Validierung als um einen Komponententest handelt.
Dies ist nicht das genaue Schema, das ich verwende, sondern dient als einfaches Beispiel:

Code: Select all

const schema = yup.object().shape({
firstName: string().required().max(10),
age: number().required()
});
Die Validierungs-Frameworks, die ich in anderen Tech-Stacks verwendet habe, ermöglichen es Ihnen, das Ergebnis einer einzelnen Eigenschaft zu testen. Das ist also die Perspektive, die ich beim Testen von Yup-Schemata habe. Ich bin wirklich neu in diesem Bereich, also könnte ich einfach versuchen, das Framework auf eine Weise zu verwenden, für die es nie gedacht war.
Mein Testcode:

Code: Select all

describe('First name', () => {
it('cannot be more than 10 characters', () => {
const model = {
firstName: '01234567891' // 11 characters, should be invalid
};

try {
schema.validate(model);
}
catch (error) {
// Now I need to assert that firstName is too long
// and I don't care about the age property in this test

expect(/* something to identify the first name validation result */)
.toBe(/* true? A certain message? */);
}
});
});
Ich habe Probleme mit der Behauptung; Ich habe keine Ahnung, wem ich es schreiben soll. Idealerweise würde ich gerne die minimalen Informationen übergeben, um den einen Validierungsfehler auszulösen, der mich interessiert (der Vorname ist zu lang), aber ich erhalte eine Fehlermeldung von einer Eigenschaft, die mir in meinem Test egal ist. In meiner realen Anwendung habe ich ein Schema mit mehr als 20 Eigenschaften, und es wäre sehr mühsam, in allen Tests, die ich schreiben muss, 20 gültige Werte und einen ungültigen Wert angeben zu müssen.
Ich führe Tests über die Befehlszeile mit npm run test:unit aus, dem Standard-Setup für Vitest.
Wie schreibe ich eine richtige Einheit? Testen Sie Yup-Schemata, sodass ich kein a angeben muss großes gültiges Objekt mit einer ungültigen Eigenschaft und eine Behauptung für eine einzelne Validierungsregel aufstellen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post