La "prueba de la trufa" falla en el tutorial de la tienda de mascotas

No sé qué significa este error o cómo solucionarlo.

Intento seguir el tutorial que se encuentra aquí y cuando llego al punto en el que tengo que ejecutar la "prueba de trufas", aparece el siguiente error.

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

Salida deTruffle version

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

este es mi archivo 2_deploy_contracts.js

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

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

este es mi archivo TestAdoption.sol:

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.");
    }

}

Esta es mi estructura de archivos:

ingrese la descripción de la imagen aquí

Respuestas (3)

Hay algo mal con la última versión de trufa. Para resolver este problema, tuve que hacer lo siguiente para encontrar una versión de trufa que funcionara.

Primero verifique las versiones disponibles de trufa con el siguiente comando.

npm view truffle versions

Luego, para cada elemento de la lista a partir de la última versión. Desinstalé trufa con

npm uninstall -g truffle

luego instaló la siguiente versión más antigua con

npm install -g truffle@<version#>

luego eliminó la carpeta de compilación

luego compiló el proyecto con

truffle compile

luego corrió

truffle test

si esto falla, pase a la siguiente versión más antigua y repita la prueba.

En mi caso, una versión funcional de truffle era 4.1.4

No puede encontrar el contrato. Debe estar en la ./contractscarpeta relativa a su directorio de trabajo actual.

El compilador creará abstracciones de contratos y las colocará en la ./build/contractscarpeta you.

Se le dice que vaya allí para encontrar Adoption.solpor esta línea:

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

Espero eso ayude.

pd Si esto no funciona, háganos saber la versión real de la trufa que está usando (porque cambia).

$ truffle version

La versión de trufa me da v4.1.5. Edité mi pregunta con información adicional. No sé por qué no puede encontrar el contrato. Existe en el directorio esperado.
Descubrí que a veces necesito darle una "patada" por razones que realmente no entiendo porque nunca he cavado demasiado profundo. Puede destruir la ./buildcarpeta y luego truffle compile.
Sin suerte, por desgracia.

Mismo problema con 4.1.5, volviendo a 4.1.4 solucionado.