我如何断言合同在场景中处于非活动状态(已存档)?

How do I assert a contract is inactive (archived) in a scenario?

如果我想验证合约是否有效,我可以简单地在场景中获取它:

template Something
  with
    party : Party
  where
    signatory party

    nonconsuming choice DoStuff : ()
      controller party
        do
          return ()


myTest = scenario do
  someone <- getParty "Someone"
  submit someone do
    cid <- create Something with party = someone 
    exercise cid DoStuff
    fetch cid  -- would fail if the DoStuff choice was consuming

如何断言相反的说法?

template Something
  with
    party : Party
  where
    signatory party

    choice DoStuff : ()
      controller party
        do
          return ()


myTest = scenario do
  someone <- getParty "Someone"
  submit someone do
    cid <- create Something with party = someone 
    exercise cid DoStuff
    fetch cid  -- fails the scenario, as it should, but that's what I want to check for

此代码显示您可以将 cid 链接到适当的范围以允许 submitMustFail 按预期方式运行:

myTest = scenario do
  someone <- getParty "Someone"
  cid <- submit someone do
    create Something with party = someone
  submit someone do
    exercise cid DoStuff
  submitMustFail someone do
    fetch cid  -- would fail if the DoStuff choice was consuming