You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi guys, I need some help. I am not sure, that here is the right place for this question, but I can't find any useful information in internet (google and stackexchange/overflow) and that's why I am writing to you.
I am using mocha/chai/chai-as-promised to test some blockchain smart contracts - classic Promises: should.eventually.equal() and so on. Until now everything was perfect but I am trying to check one UINT (solidity integer value) with instance.getValue().should.eventually.equal(4) (getValue() is getter from the solidity code) but I am receiving this error the result is: expected { Object (s, e, ...) } to equal 4. When I try to compare the values like this: assert.equal(instance.getMemberCount() == 4) - it works.
Can someone explain me - what is the difference between these two ways of testing the same thing? In the both ways should be a transformation of the Promise object, but in the first one - there is not...
The text was updated successfully, but these errors were encountered:
The reason why your first example doesn't work is that .equal() in chai is a strict equality check, i.e. ===. getValue() resolves with a web3.BigNumber, not a Number, so they'll never be equivalent.
The reason why the 2nd example works is that you're not doing a strict equality check. The non-strict equality check internally ends up calling .valueOf() on the BigNumber which returns a String value of '4'. Now, even though it returned a String, you're doing a non-strict check against the Number4, which returns true.
% node
>functionFoo() {}
undefined
> Foo.prototype.valueOf = () => { console.log('valueOf called');return'4' }
[Function]
> new Foo() == 4
valueOf called
true> new Foo() === 4
false>
Hi guys, I need some help. I am not sure, that here is the right place for this question, but I can't find any useful information in internet (google and stackexchange/overflow) and that's why I am writing to you.
I am using mocha/chai/chai-as-promised to test some blockchain smart contracts - classic Promises: should.eventually.equal() and so on. Until now everything was perfect but I am trying to check one UINT (solidity integer value) with
instance.getValue().should.eventually.equal(4)
(getValue() is getter from the solidity code) but I am receiving this errorthe result is: expected { Object (s, e, ...) } to equal 4
. When I try to compare the values like this:assert.equal(instance.getMemberCount() == 4)
- it works.Can someone explain me - what is the difference between these two ways of testing the same thing? In the both ways should be a transformation of the
Promise object
, but in the first one - there is not...The text was updated successfully, but these errors were encountered: