J'ai une fonction qui utilise l'heure actuelle (now
). Le contrat dans son ensemble est un jeton de financement participatif et le coût des jetons diffère selon la date et l'heure d'achat des jetons. Comment simuler des moments différents lors du test d'un contrat intelligent?Tests unitaires Valeurs datetime
Par exemple, en ce qui concerne le code ci-dessous, je voudrais faire des tests unitaires pour savoir si le code pour fixer le prix est correct mais je ne peux pas changer la valeur de now
. Serait-ce une bonne solution de remplacer simplement le mot-clé now
par une autre variable de test temporaire, par exemple now_sim
, puis de modifier manuellement now_sim
pendant la simulation?
if (now < (startTime + 1 days)) {
currentPrice = safeDiv(safeMul(price, 80), 100); // 20 % discount (x * 80/100)
}
else if (now < (startTime + 2 days)) {
currentPrice = safeDiv(safeMul(price, 90), 100); // 10 % discount (x * 90/100)
}
else if (now < (startTime + 12 days)) {
// 1 % reduction in the discounted rate from day 2 until day 12 (sliding scale per second)
// 8640000 is 60 x 60 x 24 x 100 (100 for 1%) (60 x 60 x 24 for seconds per day)
currentPrice = price - safeDiv(safeMul((startTime + 12 days) - now), price), 8640000);
}
else {
currentPrice = price;
}