So, you are using Double Ruby as mocking framework instead of Rspec’s default mocking framewok, and you want to mock a method which ends with the equal sign(=). Normally, if your method ends with other special characters such as “!” or “?”, you can safely mock those methods as below:
mock(@user).delete_account! { true } mock(@user).admin? { true }
However, this doesn’t work if your method ends with the “=” sign. Here comes the solution:
mock(@user).__send__('name=').with('Paranoid Android') { }
Now, in your controller, you can expect the following:
@user.name = 'Paranoid Android'
But, why did I use __send__
instead of the simple send
? Take a look at this