현재 시간 (now
)을 사용하는 함수가 있습니다. 계약 전체는 Crowdfunding 토큰이며 토큰 비용은 토큰을 구입 한 날짜와 시간에 따라 다릅니다.단위 테스트 날짜 시간 값
스마트 계약을 테스트 할 때 어떻게 다른 시간을 시뮬레이션하나요? 예를 들어, 아래 코드와 관련하여 가격 설정 코드가 맞는지 알아보기 위해 단위 테스트를하고 싶지만 now
값을 변경할 수는 없습니다.
now
키워드를 다른 임시 테스트 변수 (예 : now_sim
)로 대체 한 다음 시뮬레이션 중에 now_sim
을 수동으로 변경하는 것이 좋은 해결책입니까?
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;
}