Mocking msg.sender während des Komponententests [Duplikat]

Ich versuche derzeit, meine Unit-Tests weit voranzutreiben, um eine vollständige Abdeckung meines Codes zu erreichen. Ich verwende Ownable.solden Vertrag von Open Zepplin und kann in der Dokumentation nichts über das Verspotten des Benutzers finden, der die Anfrage sendet (verstehen msg.sender), indem er verwendet wird remix_test.sol.

Hat jemand von euch schon mal davon gehört oder hat sowas gemacht?

Ich denke, Ownable wurde in der neuesten Version gelöscht, weil es unsicher war, aber ich könnte mich irren.

Antworten (1)

Sie können die echte Adresse als msg.sender verwenden, Sie brauchen hier kein Spott. Weitere Informationen finden Sie unter Unit-Test-Code von Open Zeppelin

https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/test/ownership/Ownable.test.js

Für den Test auf Remix können Sie sich auf den Beispieltest von Remix ide beziehen

https://github.com/ethereum/remix/blob/master/remix-tests/tests/various_sender/sender_test.sol

Hoffe das könnte helfen!

Hallo und danke für deine Antwort! Mir scheint, dass diese Tests nicht mit geschrieben werden remix_tests.sol, sondern mit Mocha. Ich habe mich gefragt, ob es eine Möglichkeit gibt, sie nur mit Remix aufzuschreiben.
Ich denke, wir können ein Standardkonto für Remix verwenden, wenn Sie auf Javascript VM ausführen auswählen
Ja, aber es scheint, dass Sie während des Tests nicht wechseln können ... Wenn ich also mit "Lass es uns ABenutzer nennen" starte, sollte der Vertrag Eigentum von sein A. Wenn ich den Test erneut starte und zum BBenutzer wechsele, soll der Vertrag Eigentum von sein B.
Sie können ein bestimmtes Konto wie dieses aus dem Remix-Beispieltestcode github.com/ethereum/remix/blob/master/remix-tests/tests/… verwenden.
Hmm, tut mir leid, aber ich glaube nicht, dass dies die Antwort auf meine Frage ist ... Dies ermöglicht mir zwar, vorhandene Testkonten zu erhalten, aber dies erlaubt meinem Komponententest nicht, eine Funktion zu starten, als wäre ichTestsAccounts.getAccount(1) .