Truffle

在 truffle 的測試場景中使用 smartcontract 的 ENUM

  • January 13, 2022

我用這個命令創建了一個松露項目:

truffle unbox react

這是我的智能合約合約/SimpleStorage.sol:

contract SimpleStorage {

  enum MyEnum {
     step1,
     step2,
     step3,
     step4
  }

  MyEnum private var1 = MyEnum.step3;

  function myfunction() external view returns (MyEnum) {
     return var1;
  }  
}

這是我的測試文件:test/simplestorage.js

const SimpleStorage = artifacts.require("./SimpleStorage.sol");

contract("SimpleStorage", accounts => {

 it("my test", async () => {
   const simpleStorageInstance = await SimpleStorage.deployed();

   const ret = await simpleStorageInstance.myfunction();
   assert.equal(ret, 2);
 });

});

我的問題是:有沒有辦法訪問測試文件中的列舉結構。我想寫這樣的東西:

assert.equal(ret, MyEnum.step3);

謝謝

您可以將其添加到您的松露測試文件中:

const MyEnum = {
   step1: 0,
   step1: 1,
   step2: 2,
   step3: 3
};

然後,您可以使用如下表達式:

assert.equal(ret, MyEnum.step3);

而不是使用數字 0 到 3。

SimpleStorage 合約抽象具有MyEnum一個屬性,因此您可以執行以下操作:

assert.equal(ret, SimpleStorage.MyEnum.step3);

引用自:https://ethereum.stackexchange.com/questions/92960