"Trüffeltest" schlägt im Petshop-Tutorial fehl

Ich weiß nicht, was dieser Fehler bedeutet oder wie ich ihn beheben kann.

Ich versuche, dem hier befindlichen Tutorial zu folgen, und wenn ich an den Punkt komme, an dem ich "Trüffeltest" ausführen muss, erhalte ich die folgende Fehlermeldung.

with TestAdoption "before all" hook: prepare suite:      Error: Could not find artifacts for ''EthereumPetShopTutorial/contracts/Adoption.sol" from any sources

Ausgabe vonTruffle version

Truffle v4.1.5 (core: 4.1.5)
Solidity v0.4.21 (solc-js)

Dies ist meine Datei 2_deploy_contracts.js

var Adoption = artifacts.require("Adoption");

module.exports = function(deployer) {
  deployer.deploy(Adoption);
};

Dies ist meine TestAdoption.sol-Datei:

pragma solidity ^0.4.17;

import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/Adoption.sol";

contract TestAdoption {
  Adoption adoption = Adoption(DeployedAddresses.Adoption());

  // Testing the adopt() function
    function testUserCanAdoptPet() public {
        uint returnedId = adoption.adopt(8);

        uint expected = 8;

        Assert.equal(returnedId, expected, "Adoption of pet ID 8 should be recorded.");
    }

}

Dies ist meine Dateistruktur:

Geben Sie hier die Bildbeschreibung ein

Antworten (3)

Mit der neuesten Truffle-Version stimmt etwas nicht. Um dieses Problem zu lösen, musste ich die folgenden Dinge tun, um eine funktionierende Trüffelversion zu finden.

Suchen Sie zunächst mit dem folgenden Befehl nach verfügbaren Truffle-Versionen.

npm view truffle versions

Dann für jedes Element auf der Liste, beginnend mit der neuesten Version. Ich habe Trüffel mit deinstalliert

npm uninstall -g truffle

dann die nächstälteste Version mit installiert

npm install -g truffle@<version#>

Dann den Build-Ordner gelöscht

dann das Projekt mit kompiliert

truffle compile

dann rannte

truffle test

Wenn dies fehlschlägt, fahren Sie mit der nächstälteren Version fort und wiederholen Sie den Test.

In meinem Fall war eine funktionierende Version von Truffle 4.1.4

Der Vertrag kann nicht gefunden werden. Es sollte sich im ./contractsOrdner relativ zu Ihrem aktuellen Arbeitsverzeichnis befinden.

Der Compiler wird Vertragsabstraktionen erstellen und diese in den ./build/contractsOrdner you.

Es wird gesagt, dass man dorthin gehen soll, um Adoption.soldurch diese Zeile zu finden:

var Adoption = artifacts.require("Adoption");

Ich hoffe es hilft.

ps Wenn dies nicht ausreicht, teilen Sie uns die tatsächliche Version des Trüffels mit, die Sie verwenden (weil sich Änderungen ergeben).

$ truffle version

Die Truffle-Version bringt mir v4.1.5. Ich habe meine Frage mit zusätzlichen Informationen bearbeitet. Ich weiß nicht, warum der Vertrag nicht gefunden wird. Es existiert im erwarteten Verzeichnis.
Ich habe festgestellt, dass ich manchmal aus Gründen, die ich nicht wirklich verstehe, einen "Kick" geben muss, weil ich nie zu tief gegraben habe. Sie können den ./buildOrdner zerstören und dann truffle compile.
Leider kein Glück.

Dasselbe Problem mit 4.1.5, ein Rollback auf 4.1.4 hat es behoben.