Probleme mit UINT-Werten beim Testen mit Mokka/Chai

Ich teste gerade einige Smart Contracts mit truffle(mocha/chai/chai-as-promised) und habe folgendes Problem:

Ich habe einen Getter, und dieser Getter liefert einen UINT-Wert. Wenn ich dann versuche, den Wert mit zu testen, instance.getMemberCount().should.eventually.equal(4)lautet das Ergebnis: expected { Object (s, e, ...) } to equal 4.

Interessant ist, dass es kein Problem gibt, wenn ich versuche, die Werte direkt mit '==' zu vergleichen. (zum Beispiel: assert.equal(instance.getMemberCount() == 4))

Hat Mocha/Chai Probleme beim Umwandeln der uint-Werte?

getMemberCount().toNumber() ? vielleicht
@ВиталийШвецов - es gibt kein toNumber() in JavaScript oder irre ich mich? Ich habe es mit Number(), parseInt() versucht - aber das Ergebnis ist NaN, weil wir 'object Promise' haben und ich immer noch feststecke.
@val3ri Web3 hat ein BigNumberObjekt mit einer toNumber. ethereumbuilders.gitbooks.io/guide/content/en/… siehe "web3.toBigNumber"

Antworten (1)

Sie können .valueOf() verwenden, um den Rückgabewert von der Getter-Funktion zu erhalten.

Ich habe dies in einem der Testfälle verwendet, die ich vor einiger Zeit geschrieben habe.

Sie können sich dies als Referenz ansehen .

Hoffe das hilft.

Danke für den Github-Repository-Link, ich werde dort nach Antworten suchen! Mit .valueOf() ist das Ergebnis: [object Promise]. Und nach dem Drucken ist das Ergebnis: { [String: '4'] s: 1, e: 0, c: [ 4 ] }. JavaScript konvertiert dieses Objekt irgendwie und der Vergleich mit "==" funktioniert.