Wie würde man Stubs zum Testen von Solidity-Code verwenden?

Angesichts einiger Verträge A, die von anderen Verträgen abhängen B, was wäre der beste Weg, um Funktionen zu testen, Aohne versehentlich Code zu testen B.

Normalerweise könnten wir Stubs verwenden , um Daten zurückzugeben, die jedes Mal gleich sind, aber dies ist selbst mit einer moderaten Menge an Code (Erzeugen, Kompilieren und Bereitstellen des Stubs) umständlich.

Gibt es bereits ein Framework oder eine Bibliothek, in die diese Art von Funktionalität integriert ist?

Würde auch gerne ein Codebeispiel bereitstellen, wenn die obige Beschreibung zu abstrakt ist; einfach kommentieren.

Ich benutze:

  • Mochajs mit Chai-Behauptungen
  • truffle für ein Testframework
  • ethereumjs-testrpc für Testnetzwerk

Antworten (2)

Sie können einen Stub-Vertrag erstellen. Der Einsatz im Test mit Truffle ist nicht umständlich. Du kannst es so machen:

token1 = await Token.new()

Etwas, das ich in der Vergangenheit getan habe, ist, einen separaten „Stub“-Vertrag zu erstellen. Wenn Sie also Vertrag stubben möchten B, erstellen Sie einen anderen Vertrag BStub, der von dessen Methoden erbt Bund diese überschreibt, um stattdessen einige Scheinwerte zurückzugeben. Dann initialisieren Sie Ihren AVertrag mit einer Abhängigkeit von BStubanstelle von B. Dies hat einige Nachteile (wie die Nichtverfügbarkeit von privateFunktionen von B), kann aber gut funktionieren. Ich bin mir nicht sicher, ob es bessere Möglichkeiten gibt, dies mit einer Bibliothek oder etwas anderem zu tun, aber dies kann eine gute Problemumgehung sein.