Problem with testing state changes in Upgradeable contract

Hello again,

I am having a problem trying to test a contract which is inheriting from the Pausable contract in ‘openzeppelin-eth’. I am writing a test such as below:

await testContract.methods.pause().call({ from: pauserAccount });
let pauseStatus = await testContract.methods.paused().call();
assert.equal(pauseStatus, true);

But for some reason the pauseStatus is always set to false even though there is no revert or other exception in this code… From the truffle console I can call this function:

st.pause({ from: pauserAccount })
{ tx: '0x68358f21ebe3fbd01569921448ad45c52884afc2a75c7af31e659c1e4a9c19e3',
   { transactionHash: '0x68358f21ebe3fbd01569921448ad45c52884afc2a75c7af31e659c1e4a9c19e3',
     transactionIndex: 0,

With the truffle call to the function I have no issues at all… Any ideas on what could be happening here?


1 Like

Oops, sorry, I think I just managed to fix this by changing call() to send()…

Just in case anyone else is having an issue with this, here is a stackoverflow answer which helped me to resolve:


Hi @roy.batty Awesome that you solved your own problem.

For Truffle, you don’t even need to use send() or call(), have a look at the Truffle documentation below:
When we call setValue() , this creates a transaction.
Even more helpful, however is we don’t even need to use .call when a function is marked as constant , because truffle-contract will automatically know that that function can only be interacted with via a call:

I have moved this topic to the #support:zeppelinos category so we know it’s a support question. It also means that we can tag the reply as the answer, and show the question is solved.