Correction: Exercice : "Service de Conversion de Devises"
Conditions d’achèvement
Partie 1: Correction de la Fonction de Conversion avec Callback
Vérifiez que la fonction convertCurrency gère correctement les cas d'erreur, comme les devises non supportées, et qu'elle appelle le callback avec les bons arguments.
function convertCurrency(amount, fromCurrency, toCurrency, callback) {
const supportedCurrencies = ['USD', 'EUR', 'GBP'];
setTimeout(() => {
if (!supportedCurrencies.includes(fromCurrency) || !supportedCurrencies.includes(toCurrency)) {
callback(new Error('Unsupported currency'));
} else {
const rate = 0.9; // Simuler un taux de conversion
const convertedAmount = amount * rate;
callback(null, convertedAmount);
}
}, 1000);
}
// Test de la fonction avec un callback
convertCurrency(100, 'USD', 'EUR', (err, result) => {
if (err) {
console.error(err.message); // Doit afficher "Unsupported currency" si la devise n'est pas supportée
} else {
console.log(`Converted amount: ${result}`); // Doit afficher le montant converti si tout est correct
}
});
Partie 2: Correction de la Refactorisation avec Promesses et Async/Await
Assurez-vous que la fonction convertCurrency a été refactorisée pour retourner une promesse et que la fonction performConversion utilise async/await pour gérer la conversion de manière asynchrone.
function convertCurrency(amount, fromCurrency, toCurrency) {
const supportedCurrencies = ['USD', 'EUR', 'GBP'];
return new Promise((resolve, reject) => {
setTimeout(() => {
if (!supportedCurrencies.includes(fromCurrency) || !supportedCurrencies.includes(toCurrency)) {
reject(new Error('Unsupported currency'));
} else {
const rate = 0.9; // Simuler un taux de conversion
const convertedAmount = amount * rate;
resolve(convertedAmount);
}
}, 1000);
});
}
// Fonction asynchrone pour effectuer la conversion
async function performConversion(amount, fromCurrency, toCurrency) {
try {
const result = await convertCurrency(amount, fromCurrency, toCurrency);
console.log(`Converted amount: ${result}`);
} catch (error) {
console.error(error.message);
}
}
// Test de la fonction avec async/await
performConversion(100, 'USD', 'EUR');
Partie 3: Correction de la Gestion des Erreurs Asynchrones
Vérifiez que les erreurs sont correctement gérées dans la fonction performConversion et que les tests couvrent à la fois les scénarios de succès et d'échec.
// Ajoutez d'autres tests pour vérifier les cas d'erreur
performConversion(100, 'USD', 'XYZ'); // Devrait afficher une erreur "Unsupported currency"
performConversion(100, 'ABC', 'EUR'); // Devrait également afficher une erreur "Unsupported currency"
Vérification Finale
- Exécutez le script avec Node.js pour vous assurer qu'il n'y a pas d'erreurs de syntaxe ou d'exécution.
- Testez avec différentes valeurs et devises pour vous assurer que toutes les branches du code sont couvertes et fonctionnent comme prévu.
- Assurez-vous que les messages d'erreur sont clairs et informatifs pour l'utilisateur final.
Modifié le: vendredi 3 novembre 2023, 09:34