Truffle
在 truffle 的測試場景中使用 smartcontract 的 ENUM
我用這個命令創建了一個松露項目:
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);