В носороге вы используете WhenCalled
или GetArgumentsForCallsmadeOn
:
Thingy argument;
mock
.Stub(x => x.SetClientCallbackSender(Arg<IClientCallbackSender>.Is.Anything))
.WhenCalled(call => argument = (Thingy)call.Arguments[0]);
// act
//...
// assert
Assert.AreEqual(7, argument.X);
Проблема этой реализации в том, что вы просто получаете последний аргумент. Вы можете лучше контролировать это, используя ограничения аргументов (вместо Is.Anything).
или
// act
//...
// assert
Thingy argument =
(Thingy)mock
.GetArgumentsFormCalsMadeOn(x => x.SetClientCallbackSender(
Arg<IClientCallbackSender>.Is.Anything))[0][0];
Проблема с GetArgumentsFormCalsMadeOn
состоит в том, что он возвращает двумерный массив, строку для каждого вызова и столбец для каждого аргумента. Таким образом, вы должны точно знать, сколько вызовов выполняет тестируемое устройство.