macro_rules! testing_env {
    ($context:expr, $config:expr, $fee_config:expr, $validators:expr, $promise_results:expr $(,)?) => { ... };
    ($context:expr, $config:expr, $fee_config:expr, $validators:expr $(,)?) => { ... };
    ($context:expr, $config:expr, $fee_config:expr $(,)?) => { ... };
    ($context:expr) => { ... };
}
Expand description

Initializes a testing environment to mock interactions which would otherwise go through a validator node. This macro will initialize or overwrite the MockedBlockchain instance for interactions from a smart contract.

There are five parameters that can be accepted to configure the interface with a MockedBlockchain, in this order:

  • context: VMContext which contains some core information about the blockchain and message data which can be used from the smart contract.
  • config (optional): VMConfig which contains some additional information about the VM to configure parameters not directly related to the transaction being executed.
  • fee_config(optional): RuntimeFeesConfig which configures the fees for execution and storage of transactions.
  • validators(optional): a HashMap<AccountId, Balance> mocking the current validators of the blockchain.
  • promise_results(optional): a Vec of PromiseResult which mocks the results of callback calls during the execution.

Any argument not included will use the default implementation of each.

Example use

use nesdie::testing_env;
use nesdie::mock::{VMConfig, VmContextBuilder, RuntimeFeesConfig};
use std::collections::HashMap;

// Initializing some context is required
let context = VmContextBuilder::new().build();

// Build with just the base context
testing_env!(context.clone());

// Or include arguments up to the five optional
testing_env!(
    context,
    VMConfig::default(),
    RuntimeFeesConfig::default(),
    HashMap::default(),
    Vec::default(),
);