测试 Solidity 合约时如何从 Javascript 初始化结构?
How to initialize a struct from Javascript when testing a Solidity contract?
如何初始化 Item
结构并分配给变量?
contract ArbitrableBlacklist {
enum ItemStatus {
Absent,
Cleared,
}
struct Item {
ItemStatus status;
uint lastAction;
}
}
使用 Truffle 测试上述(简化问题)合同,但我找不到初始化 Item
结构的方法。
我试过:
let x = ArbitrableBlacklist.Item({
status: 0,
lastAction: 0
});
得到了
TypeError: ArbitrableBlacklist.Item is not a function
编辑:忘了说了,我正在写 Javascript.
的测试
检查此示例以在合同中创建结构的实例。
pragma solidity ^0.4.22;
contract ArbitrableBlacklist {
enum ItemStatus {
Absent,
Cleared
}
struct Item {
ItemStatus status;
uint lastAction;
}
}
contract test{
ArbitrableBlacklist.Item public item;
function create() public {
item = ArbitrableBlacklist.Item({
status: ArbitrableBlacklist.ItemStatus.Absent,
lastAction: 0
});
}
}
如果您尝试从 javascript 进行初始化,那么这可能是不可能的 - 至少目前是这样。但是您可以将结构成员的值作为参数传递给函数并创建一个实例,如此处所示。
function create(ArbitrableBlacklist.ItemStatus _status, uint _action) public {
item = ArbitrableBlacklist.Item({
status: _status,
lastAction: _action
});
}
对于枚举,从 javascript
传递索引 0、1 等
如何初始化 Item
结构并分配给变量?
contract ArbitrableBlacklist {
enum ItemStatus {
Absent,
Cleared,
}
struct Item {
ItemStatus status;
uint lastAction;
}
}
使用 Truffle 测试上述(简化问题)合同,但我找不到初始化 Item
结构的方法。
我试过:
let x = ArbitrableBlacklist.Item({
status: 0,
lastAction: 0
});
得到了
TypeError: ArbitrableBlacklist.Item is not a function
编辑:忘了说了,我正在写 Javascript.
的测试检查此示例以在合同中创建结构的实例。
pragma solidity ^0.4.22;
contract ArbitrableBlacklist {
enum ItemStatus {
Absent,
Cleared
}
struct Item {
ItemStatus status;
uint lastAction;
}
}
contract test{
ArbitrableBlacklist.Item public item;
function create() public {
item = ArbitrableBlacklist.Item({
status: ArbitrableBlacklist.ItemStatus.Absent,
lastAction: 0
});
}
}
如果您尝试从 javascript 进行初始化,那么这可能是不可能的 - 至少目前是这样。但是您可以将结构成员的值作为参数传递给函数并创建一个实例,如此处所示。
function create(ArbitrableBlacklist.ItemStatus _status, uint _action) public {
item = ArbitrableBlacklist.Item({
status: _status,
lastAction: _action
});
}
对于枚举,从 javascript
传递索引 0、1 等