在我的 Anchor 测试期间,我需要为我的 Solana 程序模拟某些时间变化以做出不同的反应,这样我的 Solana 程序中的 time_now 应该会发生变化:
use solana_program::sysvar::clock::Clock;
let time_now = Clock::get().unwrap().unix_timestamp;
我可以这样做吗?
在我的 Anchor 测试期间,我需要为我的 Solana 程序模拟某些时间变化以做出不同的反应,这样我的 Solana 程序中的 time_now 应该会发生变化:
use solana_program::sysvar::clock::Clock;
let time_now = Clock::get().unwrap().unix_timestamp;
我可以这样做吗?
这可能与 Anchor 无关,但在 Rust 方面,可以使用 crate 提前时间,使用program-test
创建程序测试start_with_context()
,然后使用warp_to_slot()
.
这是一个在程序上推进时钟的简单示例:https ://github.com/solana-labs/solana/blob/c550b32a4489debb163cf6e6d170e934b0b4faaf/program-test/tests/warp.rs#L54