私の会社コードベースにはIEnumerable
オブジェクトの拡張メソッドがあります。NUnitは複数の列挙ヘルパーを提供しますか?
このメソッドのいくつかは、入力時に与えられたパラメータを複数回列挙します。
もちろん、私はこれらのメソッドを修正するつもりはありません。
しかし、最初に、複数の列挙を検出するための単体テストを書きたいと思います。
私が列挙カウント情報を提供IEnumerable
の実装に来る:
public class TestableEnumerable<T> : IEnumerable<T>
{
readonly T[] values;
public TestableEnumerable(T[] values)
{
this.values = values;
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
public IEnumerator<T> GetEnumerator()
{
EnumerationCount++;
foreach (var value in values)
{
yield return value;
}
}
public int EnumerationCount { get; private set; }
}
このようなテストを見て:
[TestFixture]
public class EnumerableExtensionsTests
{
TestableEnumerable<int> sut;
[SetUp]
public void SetUp()
{
sut = new TestableEnumerable<int>(new[] { -10, 0, 10 });
}
[Test]
public void Append_Enumerate_Once()
{
var result = sut.Append(1).ToArray();
Assert.That(sut.EnumerationCount, Is.EqualTo(1));
}
}
はNUnitのは、より軽く、これを達成するための任意のメカニズムを提供していますか?