1

这是用 vyper 编写的要测试的智能合约

owner: public(address) 
name: public(String[100])
total_amount: uint256

@external
def __init__(_name: String[100]):
    self.owner = tx.origin 
    self.name = _name

@external
@payable
def donate():
#anyone can donate to the piggy bank
    self.total_amount += msg.value

@external
@view
def get_total_amount() -> uint256:
    return self.total_amount

donate()用 waffle 和 ethers.js测试智能合约方法的正确方法是什么?

是否有 ethers.js 的 sendTransaction 方法,可以像web3+truffle这个例子一样在合约端调用?

4

1 回答 1

3

您可以使用该overrides参数。它在所有合约函数参数之后使用。

在您的情况下,合约函数有 0 个参数,因此overrides位于位置 1。

let overrides = {
    value: ethers.utils.parseEther("1.0")
};
let tx = await myContract.donate(overrides);

有关详细信息,请参阅此问题。

于 2021-04-16T08:01:01.440 回答