Я успешно создал свой первый субстратный проект, и встроенный поддон также работает нормально. Теперь я хотел создать тесты для потока и предоставленных функций.
Мой поток заключается в создании случайного ха sh и сохранении этого ха sh, связанного с отправителем транзакции
let _sender = ensure_signed(origin)?;
let nonce = Nonce::get();
let _random_seed = <randomness_collective_flip::Module<T>>::random_seed();
let random_hash = (_random_seed, &_sender, nonce).using_encoded(T::Hashing::hash);
ensure!(!<Hashes<T>>::contains_key(random_hash), "This new id already exists");
let _now = <timestamp::Module<T>>::get();
let new_elem = HashElement {
id: random_hash,
parent: parent,
updated: _now,
created: _now
};
<Hashes<T>>::insert(random_hash, new_pid);
<HashOwner<T>>::insert(random_hash, &_sender);
Self::deposit_event(RawEvent::Created(random_hash, _sender));
Ok(())
работает хорошо до сих пор, когда теперь я хочу проверить поток с помощью письменного теста, я хочу проверить, назначен ли га sh, испускаемый в событии Created, также на карте HashOwner. Для этого мне нужно вернуть значение из события обратно.
И это моя проблема: D Я не профессионал в ржавчине, и все примеры, которые я нашел, ожидают, что все значения, полученные в событии, будут такими:
// construct event that should be emitted in the method call directly above
let expected_event = TestEvent::generic_event(RawEvent::EmitInput(1, 32));
// iterate through array of `EventRecord`s
assert!(System::events().iter().any(|a| a.event == expected_event));
При отладке моего письменного теста:
assert_ok!(TemplateModule::create_hash(Origin::signed(1), None));
let events = System::events();
let lastEvent = events.last().unwrap();
let newHash = &lastEvent.event;
я вижу в VSCode доступные значения:
окно отладки vs кода
но я не знаю, как вернуть это Ха sh в переменную обратно ... возможно, это только один вкладыш ... но мои знания о ржавчине чертовски малы: D
спасибо за помощь