Macro sp_api::mock_impl_runtime_apis[][src]

mock_impl_runtime_apis!() { /* proc-macro */ }

Mocks given trait implementations as runtime apis.

Accepts similar syntax as impl_runtime_apis! and generates simplified mock implementations of the given runtime apis. The difference in syntax is that the trait does not need to be referenced by a qualified path, methods accept the &self parameter and the error type can be specified as associated type. If no error type is specified String is used as error type.

Besides implementing the given traits, the Core, ApiExt and ApiErrorExt are implemented automatically.

Example

use sp_version::create_runtime_str;

struct MockApi {
    balance: u64,
}

/// All runtime api mock implementations need to be done in one call of the macro!
sp_api::mock_impl_runtime_apis! {
    impl Balance<Block> for MockApi {
        /// Here we take the `&self` to access the instance.
        fn get_balance(&self) -> u64 {
            self.balance
        }
        fn set_balance(_bal: u64) {
            // Store the balance
        }
    }

    impl BlockBuilder<Block> for MockApi {
        /// Sets the error type that is being used by the mock implementation.
        /// The error type is used by all runtime apis. It is only required to
        /// be specified in one trait implementation.
        type Error = String;

        fn build_block() -> Block {
             unimplemented!("Not Required in tests")
        }
    }
}