Truffle

如何使用存根對可靠性程式碼進行單元測試?

  • March 4, 2020

給定一些契約A,這取決於另一個契約,在沒有無意中測試程式碼的情況下B,對功能進行單元測試的最佳方法是什麼?A``B

通常,我們可以使用存根返回每次都相同的數據,但即使是少量程式碼(生成、編譯和部署存根),手動執行也很麻煩。

有沒有內置這種功能的框架或庫?

如果上面的描述過於抽象,也很樂意提供程式碼範例;只是評論。

我正在使用:

  • 帶有 chai 斷言的 mochajs
  • 用於測試框架的松露
  • ethereumjs-testrpc 用於測試網路

您可以創建存根合約。使用 truffle 在測試中部署它並不麻煩。你可以這樣做:

token1 = await Token.new()

我過去做過的事情是創建一個單獨的“存根”契約。因此,如果您想存根 contract B,您可以創建另一個BStub繼承B並覆蓋其方法的合約,以返回一些模擬值。A然後你用依賴於BStub而不是初始化你的合約B。這有一些缺點(比如 的private函式不可用B),但它可以很好地工作。不確定是否有更好的方法可以使用庫或其他東西來做到這一點,但這可能是一個很好的解決方法。

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