So you have to use the methods provided by the BN library
The BN library has several methods besides .eq() take a look at their documentation.
For backward ...
Some things to check
Does the message's hash match the signed one? The concatenation in a buffer looks wrong.
Does signed message include "Ethereum signed.." prefix? ECRecover doesn't prepend it.
Make sure v parameter is either 27 or 28, some libraries return 0 or 1 instead.
I think if you
... you will find they are the same.
If so, the issue is confusion about the instance of the contract that deployed() is using. It is the most recent, on this network, that the deployer knows about, but not necessarily what you expect. It gets updated with each deployer.deploy().
Hope it helps.