クラスNodeIdGenerator
に保護されたフィールドを模擬しようとしています。コンストラクタでフィールドの値を設定したい場合は、NodeIdGenerator
に属するGetNext()
メソッドを呼び出します。保護されたフィールドを模擬する方法は?
イムかなり確信して私のテストは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()
を呼び出すと、それはスーパークラスではなく、私はそれを使用したい1つに属する_previousId
オブジェクト使用しています(モッククラスでは。)
だから、どのように私は、保護されたフィールドを模擬するのですか?
PS:私はthis questionを読みましたが、私はそれを頭にも尾にもできないようです。
ハハ、そう簡単です。ありがとう。私は 'private new int 'という行を削除しましたか? _previousId; 'そしてちょっと前のこと! – Nobody