首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元测试中如何改变分类帐的时代?

单元测试中如何改变分类帐的时代?
EN

Stack Overflow用户
提问于 2022-05-25 10:25:56
回答 1查看 49关注 0票数 0

我试图在一个单元测试中改变时代:

  1. 我运行一个方法
  2. 我切换到下一个时代
  3. 我运行另一个方法(在相同的子状态存储上)

如果我在子状态存储上使用TransactionExecutor,似乎无法改变它的时代:

代码语言:javascript
复制
use radix_engine::ledger::*;
use radix_engine::transaction::*;
use scrypto::prelude::*;

#[test]
fn can_tick_from_scratch() {
    let mut ledger = InMemorySubstateStore::with_bootstrap();

    ledger.set_epoch(15);

    let mut executor = TransactionExecutor::new(&mut ledger, false);

    // Run transactions
    // ...

    ledger.set_epoch(16);

    // Run other transactions
    // ...
}

errorE0499:不能一次不止一次以可变的形式借用ledger --> test/lib.rs: 16 :5让mut执行器= TransactionExecutor::new(&mut分类帐,false);x^第二个可变借入发生在这里,发生在这里

如何改变传递给InMemorySubstateStoreTransactionExecutor的时代?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-25 10:25:56

在将InMemorySubstateStore变量传递给TransactionExecutor之后,确实不能直接修改它。您要做的是更改执行者的substate_store状态:

代码语言:javascript
复制
use radix_engine::ledger::*;
use radix_engine::transaction::*;
use scrypto::prelude::*;

#[test]
fn can_tick_from_scratch() {
    let mut ledger = InMemorySubstateStore::with_bootstrap();

    ledger.set_epoch(15);

    let mut executor = TransactionExecutor::new(&mut ledger, false);

    // Run transactions
    // ...

    executor.substate_store_mut().set_epoch(16);

    // Run other transactions
    // ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72375904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档