NodeIdGenerator
클래스의 보호 된 필드를 모의합니다. 생성자에서 필드의 값을 설정하려면 GetNext()
메서드를 호출하고 NodeIdGenerator
에 속합니다.보호 된 필드를 조롱하는 방법?
임 확신 내 테스트는 OK입니다 :
public class NodeIdGeneratorTests
{
[Fact(DisplayName = "Throws OverflowException when Int32.MaxValue " +
"IDs is exceeded")]
public void ThrowsOverflowExceptionWhenInt32MaxValueIdsIsExceeded()
{
var idGenerator = new NodeIdGeneratorMock(Int32.MaxValue);
Assert.Throws(typeof(OverflowException),
() => { idGenerator.GetNext(); });
}
/// <summary>
/// Mocks NodeIdGenerator to allow different starting values of
/// PreviousId.
/// </summary>
private class NodeIdGeneratorMock : NodeIdGenerator
{
private new int? _previousId;
public NodeIdGeneratorMock(int previousIds)
{
_previousId = previousIds;
}
}
}
내 문제는 모의 수업입니다. 내가 내 테스트에 GetNext()
를 호출 할 때, 그것은 슈퍼 클래스가 아닌 내가 사용하려는 하나에 속하는 _previousId
객체 사용 (모의 수업을.)
그래서, 어떻게 보호 필드를 조롱합니까?
추신 : 나는 this question을 읽었지만 머리도 꼬리도 만들 수 없습니다!
하하, 너무 쉽습니다. 감사. 방금 private int를 삭제했습니다. _previousId; 그리고 헤이 프레스토! – Nobody