Gestion des cas limites et amélioration de notre fonction
Dans cette étape finale, nous allons améliorer notre fonction isISOString
pour gérer les cas limites et la rendre plus robuste.
Cas limites courants
Lors de la validation de données dans des applications réelles, vous devez gérer diverses entrées inattendues. Examinons quelques cas limites :
- Chaînes de caractères vides
- Valeurs non chaînes de caractères (null, undefined, nombres, objets)
- Différentes représentations de fuseaux horaires
Amélioration de notre fonction
Mettons à jour notre fichier isISODate.js
pour gérer ces cas limites :
- Ouvrez le fichier
isISODate.js
dans l'IDE Web.
- Remplacez le code existant par cette version améliorée :
/**
* Checks if a string is a valid ISO 8601 formatted date string
* @param {string} val - The string to check
* @return {boolean} - Returns true if the string is in ISO format, false otherwise
*/
const isISOString = (val) => {
// Check if input is a string
if (typeof val !== "string") {
return false;
}
// Check if string is empty
if (val.trim() === "") {
return false;
}
try {
// Create a Date object from the input string
const d = new Date(val);
// Check if the date is valid and if the ISO string matches the original
return !Number.isNaN(d.valueOf()) && d.toISOString() === val;
} catch (error) {
// If any error occurs during validation, return false
return false;
}
};
// Export the function
module.exports = isISOString;
Cette fonction améliorée fait maintenant ce qui suit :
- Vérifie si l'entrée est une chaîne de caractères avant de la traiter.
- Gère les chaînes de caractères vides.
- Utilise un bloc try-catch pour gérer les erreurs qui pourraient survenir.
- Effectue toujours notre logique de validation principale.
Test de notre fonction améliorée
Créons un dernier fichier de test pour vérifier notre fonction améliorée avec les cas limites :
- Créez un nouveau fichier nommé
edgeCaseTester.js
.
- Ajoutez le code suivant :
// Import our improved isISOString function
const isISOString = require("./isISODate");
// Function to test and display results
function testCase(description, value) {
console.log(`Testing: ${description}`);
console.log(`Input: ${value === "" ? "(empty string)" : value}`);
console.log(`Type: ${typeof value}`);
console.log(`Is ISO Format: ${isISOString(value)}`);
console.log("-----------------------");
}
// Test with various edge cases
testCase("Valid ISO date", "2023-05-12T14:30:15.123Z");
testCase("Empty string", "");
testCase("Null value", null);
testDate("Undefined value", undefined);
testCase("Number value", 12345);
testCase("Object value", {});
testCase("Current date as ISO string", new Date().toISOString());
- Exécutez le fichier de test :
node edgeCaseTester.js
Application dans le monde réel
Dans une application réelle, notre fonction isISOString
pourrait être utilisée dans des scénarios tels que :
- Validation de l'entrée utilisateur dans un champ de date.
- Vérification des dates reçues depuis des API externes.
- Garantie d'un format de date cohérent dans une base de données.
- Validation des données avant traitement.
Par exemple, dans une fonction de validation de formulaire :
function validateForm(formData) {
// Other validations...
if (formData.startDate && !isISOString(formData.startDate)) {
return {
valid: false,
error: "Start date must be in ISO format"
};
}
// More validations...
return { valid: true };
}
La fonction améliorée est maintenant suffisamment robuste pour gérer les entrées inattendues et fournir une validation fiable pour les chaînes de caractères de date au format ISO.