stub method is quite complex since we have to stub very different stuff for each method. 
These include replacing methods, returning custom values, and even completely mocking the transaction object