Just off the top of my head, set ExpectCall with Times(1) and the desired return value separately for each different value in your 'cascade'. I think the most recently set expectation (and return) value will get hit first. You might need to set RetiresOnSaturation.