Beitrag
Teile dein Wissen.
Wie teste ich eine Funktion mit einem Empfangsparameter in Sui?
Ich versuche, die receive_object
Funktion mit einem Receiving
Parameter in Sui zu testen, basierend auf den Dokumenten unter diesem Link. Anfangs habe ich einen Test anhand des Beispiels erstellt, aber ich habe Probleme damit, das gesendete Argument in einen Receiving
Typ umzurechnen. Ich habe auch versucht, den Empfangstyp zu bezeichnen, bin aber auf Fehler gestoßen. Könnte mir jemand helfen, diese Funktion richtig zu testen?
- Move CLI
- Move
Antworten
4Wenn Sie Receiving
in Ihren Tests immer noch Probleme mit der Bezeichnung des Typs haben, kann es hilfreich sein, mit der SUI-CLI zu testen. Mit der CLI können Sie einfach Typargumente mithilfe des --type-args
Flags angeben, was Ihr Testszenario vereinfachen könnte.
In einigen Testszenarien funktioniert die direkte Übertragung von Objekten als gemeinsam genutzt möglicherweise nicht wie beabsichtigt, insbesondere wenn Sie Fehler im Zusammenhang mit Instanziierungsrechten erhalten. Diese Probleme könnten durch eine Anpassung der Transaktionsstruktur behoben werden, um zunächst die gemeinsame Nutzung von Objekten zu erleichtern, bevor der öffentliche Empfang versucht wird.
Möglicherweise müssen Sie Ihren Test zunächst so strukturieren, dass das Objekt an den SharedObject
verwendeten TransactionBlock übertragen wird. Receiving<T>
In einem nachfolgenden TransactionBlock können Sie die Modulfunktion zum Akzeptieren aufrufen, also die Funktion mit. Dieser Ansatz stellt sicher, dass das Objekt zuerst entsprechend geteilt wird, bevor versucht wird, es zu empfangen.
Bei der Übertragung eines Objekts public_transfer
ist die Verwendung der Methode richtig, wenn Sie beabsichtigen, dem Objekt das volle Eigentum zu übertragen, auch wenn Sie es nicht ausdrücklich auf ein übertragenSharedObject
. Beide Methoden eignen sich für unterschiedliche Anwendungsfälle. Stellen Sie also sicher, dass Sie diejenige verwenden, die Ihrem Ziel entspricht.
Weißt du die Antwort?
Bitte melde dich an und teile sie.