Имам метод, canUserRead, който може да обработва нулев аргумент като потребител (защото понякога потребителите не са влезли).
Сега искам да създам мъниче, чието поведение отразява това на метода. Опитах:
IAccessRightsManager stubAccessRights = new
MockRepository.GenerateStub<IAccessRightsManager>();
// if there is no user logged in
stubAccessRights.Stub(ar => ar.canUserRead(null, confidentialDocument))
.Return(false); //doesn't compile
stubAccessRights.Stub(ar => ar.canUserRead(null, nonConfidentialDocument))
.Return(true); //doesn't compile
// if there is a user without confidentiality clearance logged in
stubAccessRights.Stub(ar => ar.canUserRead(nonPrivilegedUser, confidentialDocument))
.Return(false);
stubAccessRights.Stub(ar => ar.canUserRead(nonPrivilegedUser, nonConfidentialDocument))
.Return(true);
// if there is a user with confidentiality clearance logged in
stubAccessRights.Stub(ar => ar.canUserRead(privilegedUser, confidentialDocument))
.Return(true);
stubAccessRights.Stub(ar => ar.canUserRead(privilegedUser, nonConfidentialDocument))
.Return(true);
Това не се компилира, защото null не е от тип IUser. А null няма референтна идентичност, така че инициализирането на нова IUser променлива с null не помага.
И така, как да създам метод за мъниче, който връща нещо разумно, когато му бъде подаден нулев аргумент?