Skip to main content

StubRuntime

Struct StubRuntime 

Source
pub struct StubRuntime { /* private fields */ }
Expand description

An implementation of Runtime that returns pre-defined results from a queue. This runtime is primarily intended for testing purposes.

§Examples

use candid::Principal;
use ic_canister_runtime::{IcError, Runtime, StubRuntime};

const PRINCIPAL: Principal = Principal::from_slice(&[0x9d, 0xf7, 0x01]);
const METHOD: &str = "method";
const ARGS: (&str,) = ("args",);

let runtime = StubRuntime::new()
    .add_stub_response(1_u64)
    .add_stub_response("two")
    .add_stub_response(Some(3_u128));

let result_1: Result<u64, IcError> = runtime
    .update_call(PRINCIPAL, METHOD, ARGS, 0)
    .await;
assert_eq!(result_1, Ok(1_u64));

let result_2: Result<String, IcError> = runtime
    .query_call(PRINCIPAL, METHOD, ARGS)
    .await;
assert_eq!(result_2, Ok("two".to_string()));

let result_3: Result<Option<u128>, IcError> = runtime
    .update_call(PRINCIPAL, METHOD, ARGS, 0)
    .await;
assert_eq!(result_3, Ok(Some
(3_u128)));

Implementations§

Source§

impl StubRuntime

Source

pub fn new() -> Self

Create a new empty StubRuntime.

Source

pub fn add_stub_response<Out: CandidType>(self, stub_response: Out) -> Self

Mutate the StubRuntime instance to add the given stub response.

Panics if the stub response cannot be encoded using Candid.

Trait Implementations§

Source§

impl Debug for StubRuntime

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for StubRuntime

Source§

fn default() -> StubRuntime

Returns the “default value” for a type. Read more
Source§

impl Runtime for StubRuntime

Source§

fn update_call<'life0, 'life1, 'async_trait, In, Out>( &'life0 self, _id: Principal, _method: &'life1 str, _args: In, _cycles: u128, ) -> Pin<Box<dyn Future<Output = Result<Out, IcError>> + Send + 'async_trait>>
where In: ArgumentEncoder + Send + 'async_trait, Out: CandidType + DeserializeOwned + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Defines how asynchronous inter-canister update calls are made.
Source§

fn query_call<'life0, 'life1, 'async_trait, In, Out>( &'life0 self, _id: Principal, _method: &'life1 str, _args: In, ) -> Pin<Box<dyn Future<Output = Result<Out, IcError>> + Send + 'async_trait>>
where In: ArgumentEncoder + Send + 'async_trait, Out: CandidType + DeserializeOwned + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Defines how asynchronous inter-canister query calls are made.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.