Vyper

我想用 BigNumber 斷言來理解一些東西

  • February 6, 2021

我創建了一個帶有智能合約和測試文件的松露項目。

以下是測試文件的摘錄:

expect(ret).to.be.bignumber.equal(new BN('42'));

ret 是我要測試的智能合約函式返回的值。它是一個 uint256 值:42。

它工作正常,但我有一些問題要理解:

  • 我為什麼要使用 BN 庫?Javascript 不支持 uint256 嗎?這有什麼區別(它也有效):
assert.equal(ret, 42);
  • 為什麼 42 必須寫成 BN 建構子中的字元串?這是一個整數,而不是一個字元串……

謝謝

在小數字的情況下,您不必使用任何 BigNumber 庫。

問題是,如果您不使用 BigNumber 庫進行小數字測試,那麼如果您想使用更大的數字,相同的程式碼將不再適用。因此,無論您使用小數還是大數,已經使用 BigNumbers 是一種很好的做法。

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