Truffle
如何使用存根對可靠性程式碼進行單元測試?
給定一些契約
A
,這取決於另一個契約,在沒有無意中測試程式碼的情況下B
,對功能進行單元測試的最佳方法是什麼?A``B
通常,我們可以使用存根返回每次都相同的數據,但即使是少量程式碼(生成、編譯和部署存根),手動執行也很麻煩。
有沒有內置這種功能的框架或庫?
如果上面的描述過於抽象,也很樂意提供程式碼範例;只是評論。
我正在使用:
- 帶有 chai 斷言的 mochajs
- 用於測試框架的松露
- ethereumjs-testrpc 用於測試網路
您可以創建存根合約。使用 truffle 在測試中部署它並不麻煩。你可以這樣做:
token1 = await Token.new()
我過去做過的事情是創建一個單獨的“存根”契約。因此,如果您想存根 contract
B
,您可以創建另一個BStub
繼承B
並覆蓋其方法的合約,以返回一些模擬值。A
然後你用依賴於BStub
而不是初始化你的合約B
。這有一些缺點(比如 的private
函式不可用B
),但它可以很好地工作。不確定是否有更好的方法可以使用庫或其他東西來做到這一點,但這可能是一個很好的解決方法。