Ich habe eine Vertragsfunktion, die bei jedem Aufruf Ereignisse ausgibt.Test ethereum Ereignisprotokolle mit Trüffel
Ich mag würde ein Event auf jedem Test emittiert haben, die hier sind vorbei sind einige Tests:
it("should emit Error event when sending 5 ether", function(done){
var insurance = CarInsurance.deployed();
insurance.send({from: accounts[0], value: web3.toWei(5, 'ether')}).then(done).catch(done);
});
it("should emit Error event when sending 5 ether", function(done){
var insurance = CarInsurance.deployed();
insurance.send({from: accounts[0], value: web3.toWei(5, 'ether')}).then(function(txHash){
assert.notEqual(txHash, null);
}).then(done).catch(done);
});
it("should emit Error event when sending 5 ether", function(done){
var insurance = CarInsurance.deployed();
insurance.send({from: accounts[0], value: web3.toWei(5, 'ether')}).then(function(done){
done();
}).catch(done);
});
Die Ergebnisse sind:
1) should emit Error event when sending 5 ether
Events emitted during test:
---------------------------
Error(error: Must send 10 ether)
---------------------------
✓ should emit Error event when sending 5 ether (11120ms)
✓ should emit Error event when sending 5 ether (16077ms)
3 passing (51s)
1 failing
1) Contract: CarInsurance should emit Error event when sending 5 ether:
Error: done() invoked with non-Error: 0x87ae32b8d9f8f09dbb5d7b36267370f19d2bda90d3cf7608629cd5ec17658e9b
Sie können sehen, dass die einzige, die wird protokolliert fehlgeschlagen.
Irgendeine Idee?
Danke
Tatsächlich gibt nur der erste Test das "Error" -Ereignis aus, das ich möchte. Wenn ich ändere, wie Sie sagten, es gibt nichts aus, scheint, dass es auf fertig() wartet ... – ltheron
@ user3262670 Ich sehe keine Prüfung für Ereignisse im Test überhaupt. + Alle Testfälle haben den Namen "sollten ein Fehlerereignis beim Senden von 5 Äther senden", so dass Sie nicht sagen können, welche von ihnen fehlschlagen. – Aldekein
Können wir Ereignisse im Test überprüfen? Ich wollte drei Möglichkeiten zeigen, denselben Testfall zu machen. Ich möchte nur Ereignisse während Tests anzeigen, und die einzige Möglichkeit ist, wenn der Test fehlschlägt ... – ltheron