Calling Truffle Migration von einem End-to-End-Test, wie kann ich Adressen von kompilierten Verträgen abrufen?

Ich entwickle einen End-to-End-Test, der ausgelöst wird truffle migrateund dann Vertragsadressen für Funktionen im Test verfügbar machen muss.

Wie kann ich truffle migratebereitgestellte Vertragsadressen zurückgeben? Es wäre nicht ideal, die stdoutfrom zu analysieren truffle migrate.

Antworten (2)

Sie sollten in der Lage sein, die Adressen aus den von truffle generierten jsonABI-Dateien (den Artefakten) abzurufen. Truffle speichert jede Version in den JSON-Dateien in der networksEigenschaft. Jede Version wird mit einer Nummer dargestellt. Ich konnte jedoch nicht sagen, wie diese Zahl berechnet wird und wie Sie sie übereinstimmen lassen könnten, daher ist diese Antwort leider unvollständig.

Während ein anderer Benutzer mit tieferem Wissen darüber eine vollständige Antwort liefert, die möglicherweise ein wenig hilfreich ist, können Sie damit beginnen, sich darum zu kümmern

Sie haben Recht -- wenn die JSON - Datei aufgerufen wird Contract.json, ist der Wert über verfügbar .networks.{network_id}.address. Vielen Dank!

Vielleicht möchten Sie es so versuchen.

contract('MyContract", function(accounts) {

  var myContract;

  beforeEach(function() {
    return MyContract.new()
    .then(function(instance) {
       myContract = instance;
    });
  });

  it('should be owned', function() { 
  ...
});

Auf diese Weise beginnt jeder Test mit einem neu initialisierten Testvertrag und Ihre Tests stören keine bereitgestellten (migrierten) Verträge. Meiner Meinung nach ist dies vorzuziehen, anstatt MyContract.deployed()Ihnen die Adresse zu geben, nach der Sie suchen.

Ich hoffe es hilft.