14.1 編寫測試合約
首先編寫一個(gè)測試合約弧蝇,用于被其他合約調(diào)用:
contract TestContract {
uint public x;
// 設(shè)置狀態(tài)變量
function setX(uint _x) external {
x = _x;
}
// 獲取狀態(tài)變量的值
function getX() external view returns (uint){
return x;
}
// 用于接收ETH
function receiveETH() external payable {}
// 獲取合約余額
function getBalance() external view returns (uint) {
return address(this).balance;
}
}
測試合約有一個(gè)狀態(tài)變量x,同時(shí)有以下幾個(gè)函數(shù):
-
setX()
:設(shè)置狀態(tài)變量x -
getX()
:獲取狀態(tài)變量x的值 -
receiveETH()
:用于接收ETH -
getBalance()
:用于獲取合約余額
14.2 編寫調(diào)用測試合約的合約
再編寫一個(gè)合約兄旬,用于對測試合約進(jìn)行調(diào)用:
contract CallTestContract {
// 調(diào)用測試合約方法一
function getX(TestContract _t) external view returns (uint){
return _t.getX();
}
//調(diào)用測試合約方法二
function setX(address _t, uint _x) external {
TestContract(_t).setX(_x);
}
// 調(diào)用測試合約接收ETH方法
function receiveETH(TestContract _t) external payable {
_t.receiveETH{value: msg.value}();
}
}
合約包含三個(gè)函數(shù):
-
setX()
:調(diào)用測試合約設(shè)置狀態(tài)變量x -
getX()
:調(diào)用測試合約獲取狀態(tài)變量x的值 -
receiveETH()
:調(diào)用測試合約的receiveETH()
刹泄,將收到的ETH轉(zhuǎn)入測試合約
調(diào)用其他合約有兩種方式:
方式一:
函數(shù)中傳入的參數(shù)直接是測試合約類型:TestContract _t
,這樣可以直接通過_t調(diào)用測試合約的函數(shù):_t.getX();
疏虫。
方式二:
函數(shù)中傳入的參數(shù)是測試合約的地址:address _t
永罚,需要將地址類型轉(zhuǎn)換成測試合約類型帅涂,再調(diào)用測試合約的函數(shù):TestContract(_t).setX(_x);
。
將收到的ETH全部轉(zhuǎn)入測試合約中的方法如下:
_t.receiveETH{value: msg.value}();