Rhino difference between .Is.Anything and .Is.Typeof
Rhino mocks, when matching arguments, it is preferential, as usual, to be as specific as you can about expected arguments (including repeat information). For instance, if you will call a method with e.g. a username, then set the expectation to expect that specific username:
Mock.Expect(r => r.SetUsername(Arg.Is.Equal("expectedusername"))).Repeat.Once()
There is an "Is" constraint called Anything. You might expect the following to match any string:
Mock.Expect(r => r.SetUsername(Arg.Is.Anything)).Repeat.Once()
But it doesn't! It matches anything! This is slightly misleading since the Arg class is parameterised and would seem a bit redundant but it is still the way it is. What you should do to achieve this functionality is to use TypeOf instead:
Mock.Expect(r => r.SetUsername(Arg.Is.TypeOf)).Repeat.Once()
Mock.Expect(r => r.SetUsername(Arg
There is an "Is" constraint called Anything. You might expect the following to match any string:
Mock.Expect(r => r.SetUsername(Arg
But it doesn't! It matches anything! This is slightly misleading since the Arg class is parameterised and would seem a bit redundant but it is still the way it is. What you should do to achieve this functionality is to use TypeOf instead:
Mock.Expect(r => r.SetUsername(Arg