Documentation ¶
Overview ¶
The ethtest package provides helpers for testing Ethereum smart contracts.
The ethtest package provides helpers for testing Ethereum smart contracts.
Index ¶
- Constants
- Variables
- func Comparers() []cmp.Option
- func ExecutionErrData(err error) (interface{}, bool)
- func LogGas(tb testing.TB, tx *types.Transaction, prefix string)
- type MockedEntity
- type SimulatedBackend
- func (sb *SimulatedBackend) Acc(account int) *bind.TransactOpts
- func (sb *SimulatedBackend) Addr(account int) common.Address
- func (sb *SimulatedBackend) AsMockedEntity(mock MockedEntity, fn func(*bind.TransactOpts) error) error
- func (sb *SimulatedBackend) BalanceOf(ctx context.Context, tb testing.TB, addr common.Address) *big.Int
- func (sb *SimulatedBackend) BlockNumber() *big.Int
- func (sb *SimulatedBackend) CallFrom(account int) *bind.CallOpts
- func (sb *SimulatedBackend) FastForward(blockNumber *big.Int) bool
- func (sb *SimulatedBackend) GasSpent(ctx context.Context, tb testing.TB, tx *types.Transaction) *big.Int
- func (sb *SimulatedBackend) Must(tb testing.TB, descFormat string, descArgs ...interface{}) func(*types.Transaction, error) *types.Transaction
- func (sb *SimulatedBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error
- func (sb *SimulatedBackend) WithValueFrom(account int, value *big.Int) *bind.TransactOpts
Constants ¶
const ( OpenSea = MockedEntity("OpenSea") Chainlink = MockedEntity("Chainlink") )
Mocked entities.
Variables ¶
var GasPrice uint64 = 200
GasPrice is the assumed gas price, in GWei, when logging transaction costs.
Functions ¶
func ExecutionErrData ¶
ExecutionErrData checks if err is both an rpc.Error and rpc.DataError, and returns err.ErrorData() iff err.ErrorCode()==3 (i.e. an Execution error under the JSON RPC error codes IP).
Types ¶
type MockedEntity ¶ added in v0.12.0
type MockedEntity string
A MockedEntity mocks a real-world entity such as Uniswap or Opensea with deterministically generated accounts (and therefore contract addresses).
type SimulatedBackend ¶
type SimulatedBackend struct { *backends.SimulatedBackend AutoCommit bool // contains filtered or unexported fields }
A SimulatedBackend embeds a go-ethereum SimulatedBackend and extends its functionality to simplify standard testing.
func NewSimulatedBackend ¶
func NewSimulatedBackend(numAccounts int) (*SimulatedBackend, error)
NewSimulatedBackend returns a new simulated ETH backend with the specified number of accounts. Transactions are automatically committed unless. Close() must be called to free resources after use.
func NewSimulatedBackendTB ¶
func NewSimulatedBackendTB(tb testing.TB, numAccounts int) *SimulatedBackend
NewSimulatedBackendTB calls NewSimulatedBackend(), reports any errors with tb.Fatal, and calls Close() with tb.Cleanup().
func (*SimulatedBackend) Acc ¶
func (sb *SimulatedBackend) Acc(account int) *bind.TransactOpts
Acc returns a TransactOpts signing as the specified account number.
func (*SimulatedBackend) Addr ¶ added in v0.10.0
func (sb *SimulatedBackend) Addr(account int) common.Address
Addr returns the Address of the specified account number.
func (*SimulatedBackend) AsMockedEntity ¶ added in v0.12.0
func (sb *SimulatedBackend) AsMockedEntity(mock MockedEntity, fn func(*bind.TransactOpts) error) error
AsMockedEntity calls the provided function with the mocked entity's account if it is supported, propagating any returned error.
MockedEntity accounts SHOULD NOT be used in general tests; prefer provided packages like openseatest to using AsMockedEntity() directly.
func (*SimulatedBackend) BalanceOf ¶
func (sb *SimulatedBackend) BalanceOf(ctx context.Context, tb testing.TB, addr common.Address) *big.Int
BalanceOf returns the current balance of the address, calling tb.Fatalf on error.
func (*SimulatedBackend) BlockNumber ¶
func (sb *SimulatedBackend) BlockNumber() *big.Int
BlockNumber returns the current block number.
func (*SimulatedBackend) CallFrom ¶
func (sb *SimulatedBackend) CallFrom(account int) *bind.CallOpts
CallFrom returns a CallOpts from the specified account number.
func (*SimulatedBackend) FastForward ¶
func (sb *SimulatedBackend) FastForward(blockNumber *big.Int) bool
FastForward calls sb.Commit() until sb.BlockNumber() >= blockNumber. It returns whether fast-forwarding was required; i.e. false if the requested block number is current or in the past.
NOTE: FastForward is O(curr - requested).
func (*SimulatedBackend) GasSpent ¶
func (sb *SimulatedBackend) GasSpent(ctx context.Context, tb testing.TB, tx *types.Transaction) *big.Int
GasSpent returns the gas spent (i.e. used*cost) by the transaction.
func (*SimulatedBackend) Must ¶ added in v0.10.0
func (sb *SimulatedBackend) Must(tb testing.TB, descFormat string, descArgs ...interface{}) func(*types.Transaction, error) *types.Transaction
Must returns a function that ensures a successful transaction, reporting any error on tb.Fatal, or propagating the transaction.
Intended usage:
sb.Must(t, "ContractFunc()")(foo.ContractFunc(sim.Acc(<acc>), …))
The description format and associated args will be used as a prefix in any reported errors. The returned function MUST be used immediately, and can only be used once.
func (*SimulatedBackend) SendTransaction ¶
func (sb *SimulatedBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error
SendTransaction functions pipes its parameters to the embedded backend and also calls Commit() if sb.AutoCommit==true.
func (*SimulatedBackend) WithValueFrom ¶
func (sb *SimulatedBackend) WithValueFrom(account int, value *big.Int) *bind.TransactOpts
WithValueFrom returns a TransactOpts that sends the specified value from the account. If value==0, sb.Acc(account) can be used directly.
Directories ¶
Path | Synopsis |
---|---|
Package chainlinktest provides test doubles for Chainlinks's VRF.
|
Package chainlinktest provides test doubles for Chainlinks's VRF. |
chainlinktestabi
Package chainlinktestabi is a generated package providing test doubles and real implementations of Chainlink contracts.
|
Package chainlinktestabi is a generated package providing test doubles and real implementations of Chainlink contracts. |
Package openseatest provides test doubles for OpenSea's Wyvern protocol.
|
Package openseatest provides test doubles for OpenSea's Wyvern protocol. |
openseatestabi
Package openseatestabi is a generated package providing test doubles of OpenSea contracts.
|
Package openseatestabi is a generated package providing test doubles of OpenSea contracts. |
Package revert provides means for testing Ethereum reverted execution.
|
Package revert provides means for testing Ethereum reverted execution. |