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