Truffle

如何在松露測試中傳遞 msg.sender 和建構子參數?

  • July 29, 2018

我有以下建構子:

constructor(address _payee) public {
   payer = msg.sender;
   payee = _payee;
}

我的 JavaScript 測試中的這個函式:

beforeEach(async () => {
   contract = await Contract.new(payee);
});

但是,我收到一個錯誤:

錯誤:合約合約建構子需要 1 個參數,收到 2 個

我確保我清除了build文件夾,並且我之前已經重新編譯了契約truffle compile --all

我怎樣才能通過msg.senderpayee?使用遷移部署程序部署合約時,這些建構子參數沒有問題。

使用甘納許1.2.1和松露4.1.13

顯然,我只需要重新啟動ganache。部署了舊版本的契約,很可能導致不兼容。

那應該行得通。我懷疑問題出在其他地方。

它可能取決於您的版本,但我的測試文件使用beforeEach(async function () {- 有點不同的語法。確保這對您來說不是問題。

您是否使用類似的Contract東西正確導入const Contract = artifacts.require('MyContract');?(順便說一句,我不確定您是否在使用Contract變數名的確切名稱時遇到問題 - 請確保使用另一個名稱。

引用自:https://ethereum.stackexchange.com/questions/55397