사용자로 null 인수를 처리 할 수있는 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에는 참조 ID가 없으므로 새로운 IUser 변수를 null로 초기화해도 도움이되지 않습니다.
그렇다면 null 인수를 전달할 때 합리적인 것을 반환하는 스텁 메서드를 어떻게 생성합니까?
이 시도:
IAccessRightsManager stubAccessRights = new
MockRepository.GenerateStub<IAccessRightsManager>();
stubAccessRights.Stub(ar => ar.canUserRead((IUser)null, confidentialDocument))
.Return(false);
stubAccessRights.Stub(ar => ar.canUserRead((IUser)null, nonConfidentialDocument))
.Return(true);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다