Ho una funzione su un contratto Solidità che esegue un lancio. Per esempio.Qual è il modello per la gestione del tiro su un contratto Solidity nei test
function do(x,y) {
if (msg.sender != owner)
throw;
// ...
}
Nell'ambiente Tartufo ho qualcosa un test js come:
//.... part of a promise chain
.then(
function (_bool0) {
assert.isTrue(_bool0,"whoops - should be true");
return contract.do("okdoke" , {from: accounts[1]});
}).then(
function (tx_id) {
//..
done();
}
// ...
Il contract.do ritorno() fa sì che la condizione che si traduce nel lancio. Che produce il seguente nella Tartufo di prova uscita per questo test:
Error: VM Exception while executing transaction: invalid JUMP
Qual è il linguaggio per la gestione di un lancio da una funzione contratto in un test come questo? Il tiro è il comportamento corretto.
Caveat per chiunque seguendo il "controllo se si utilizza tutto il gas" approccio: Questo cambierà in futuro, dato che il lancio viene deprecato a favore di "revert()". Revert() NON consumerà tutto il gas, solo il gas che è stato utilizzato fino al punto in cui è stato chiamato revert(). – TripleSpeeder
Questo problema mi crea ancora problemi, soprattutto dal momento che sto usando revert(). Sono stato in grado di individuare errori su TestRPC ma ora che sono in corso, le transazioni restituite dalla rete di test sono state restituite come se avessero avuto successo. eventuali aggiornamenti dalla tua parte? – okwme