Auswahl zwischen Javascript und Solidity zum Testen von Smart Contracts

Truffle bietet zwei Möglichkeiten zum Testen von Smart Contracts: entweder mit Testdateien, die als Solidity Contracts geschrieben sind, oder mit Javascript/Mocha.

https://truffleframework.com/docs/truffle/testing/writing-tests-in-solidity

https://truffleframework.com/docs/truffle/testing/writing-tests-in-javascript

Gibt es Empfehlungen, wann zwischen den beiden zu wählen ist? Bleibst du bei einem oder verwendest du beide, aber für unterschiedliche Zwecke?

Antworten (4)

Ich verwende (vorerst) ausschließlich Javascript, weil:

  • Ich fühle mich mit der Entwicklungsumgebung und den Tools von nodejs wohler als mit Solidität
  • Ich mag die Debugging-Meldungen, die ich in js einfügen kann (Sie könnten wahrscheinlich einige Ereignisse auslösen, die als Protokollierungsvorgänge dienen würden).
  • Ich habe keine komplexen Smart Contracts geschrieben, die miteinander interagieren müssen, sodass ich ihre Interaktionen testen sollte
  • Ich kann nodejs-Snippets aus den Tests nehmen und sie fast ohne Änderungen in der Web-Benutzeroberfläche verwenden.

Ich sage nicht, dass mein Ansatz der beste ist und jeder ihn verwenden sollte, und dass das Testen auf Solidität nutzlos ist. Ich sage eher, ich bin faul , hatte nicht genug Zeit, um zu lernen und mich wohl zu fühlen, Solidity zum Testen zu verwenden, und das Testen von nodejs ist für mich jetzt gut genug.

Wenn Sie die Zeit haben, würde ich Ihnen empfehlen, sich mit beiden Wegen vertraut zu machen .

Hmm, basierend auf dem, was Sie gerade gesagt haben, müssten wir Solidity verwenden, wenn wir Interaktionen zwischen Verträgen testen?
Ich denke, das ist der beste Anwendungsfall dafür. Natürlich kann man damit auch einzelne Verträge testen, web3jshat bei mir aber bisher sehr gute Dienste geleistet.

Ich stimme Tudor zu, ich benutze auch Javascript. Möchte ergänzen:

  • tests in solidity truffle führen einige zusätzliche Transaktionen durch, die ziemlich schwer zu verfolgen sind
  • Tests in Javascript viel bequemer zu debuggen

Testen Sie Ihre Smart Contracts mit JavaScript

Und das Ergebnis:

Vertrag: FundRaise ✓ hat einen Eigentümer (38ms ) ✓ kann Gelder annehmen (234ms )
2 bestanden (473ms )

Schön. Dies ist ein Prozess, der systematisch durchgeführt wird, um Smart Contracts mit einem in JavaScript geschriebenen Test abzudecken. Machen Sie einfach so lange weiter, bis alle Bedingungen eines Smart Contracts erfüllt sind.

Hier ist ein großartiger Medium-Artikel, der alles abdeckt, was mit dem Testen auf Ethereum zu tun hat.

Festigkeitsprüfungen

Das Schreiben von Tests in Solidity gibt uns die Möglichkeit, Blockchain-Layer-Tests durchzuführen. Sie ermöglichen Tests, Verträge und Funktionen so aufzurufen, als ob sie selbst auf der Blockchain wären. Um das interne Verhalten von Smart Contracts zu testen, können wir:

  • Schreiben Sie Unit-Tests, um Funktionsrückgabewerte und Zustandsvariablenwerte zu überprüfen.
  • Schreiben Sie Integrationstests, die die Interaktionen zwischen Verträgen testen. Diese stellen sicher, dass Mechanismen wie Vererbung und Abhängigkeitsinjektion wie erwartet funktionieren.

JavaScript-Tests

Wir müssen auch sicherstellen, dass Smart Contracts das richtige externe Verhalten zeigen. Um intelligente Verträge von außerhalb der Blockchain zu testen, verwenden wir Web3js, genau wie unsere DApp. Wir müssen darauf vertrauen können, dass unser DApp-Frontend beim Aufrufen der Smart Contracts ordnungsgemäß funktioniert. Diese fallen unter Integrationstests.

Quelle: https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d