Truffle-Test
使用 truffle 測試框架測試 bytes32 類型的更好方法
一個小問題,當我儲存 a
bytes32
並從 truffle 控制台檢索它時,為什麼它以 64 位顯示?前任:
0x74657374737472696e6700000000000000000000000000000000000000000000
因為這在使用 truffle 測試框架時有點煩人。
assert.equal(data[1].toUpperCase(), "0x74657374737472696e6700000000000000000000000000000000000000000000".toUpperCase(), "name doesn't match");
測試
bytes32
數據時,我必須匹配一個精確的 64 位十六進制值才能通過。因此,對於assert.equal
我要輸入預測值的 的第二個參數,我必須手動將字元串轉換為十六進制,主要使用來自這個站點,實際上大多數字元串到十六進制站點都沒有以完整的 64 位顯示。他們會將其顯示為:74657374737472696e67
.我必須計算零並將它們附加到匹配 64 位,這很煩人。有什麼方便的方法來處理這個嗎?
您顯示的值是 32 字節長(256 位),而不是 64 位。
它們是那個長度,因為類型是
bytes32
. 數字1
與 不同10
,十六進制也一樣。您不能只刪除尾隨零而不更改值。假設您總是使用字元串,您可以使用
web3.toAscii
… 例如assert.toEqual(web3.toAscii(data[1]), "teststring");
.(僅供參考,我認為在 web3.js 1.0 beta 中,功能是
web3.utils.toAscii
。)