Vyper
我想用 BigNumber 斷言來理解一些東西
我創建了一個帶有智能合約和測試文件的松露項目。
以下是測試文件的摘錄:
expect(ret).to.be.bignumber.equal(new BN('42'));
ret 是我要測試的智能合約函式返回的值。它是一個 uint256 值:42。
它工作正常,但我有一些問題要理解:
- 我為什麼要使用 BN 庫?Javascript 不支持 uint256 嗎?這有什麼區別(它也有效):
assert.equal(ret, 42);
- 為什麼 42 必須寫成 BN 建構子中的字元串?這是一個整數,而不是一個字元串……
謝謝
在小數字的情況下,您不必使用任何 BigNumber 庫。
問題是,如果您不使用 BigNumber 庫進行小數字測試,那麼如果您想使用更大的數字,相同的程式碼將不再適用。因此,無論您使用小數還是大數,已經使用 BigNumbers 是一種很好的做法。