単体テストを作成しようとしています。クラス Position は、サードパーティ ライブラリに実装されています。しかし、単体テストでは、Size プロパティを特定の値に設定する必要があります。
public class Position
{
private double _size;
private double Size
{
get
{
return _size;
}
internal set
{
_size = value;
}
}
}
この投稿を読みました:読み取り専用メンバーを含むインターフェイスの単体テスト スタブを作成するにはどうすればよいですか? しかし、それを機能させる方法がわかりませんでした。
これはテスト対象のクラスです (単純化された例です)。メソッドのpos
引数は次CalcPositionMetric()
の型でなければなりませんPosition
:
public class PositionMetrics
{
public PositionMetrics()
{}
public double CalcPositionMetric(Position pos)
{
return 2 * pos.Size;
}
}
これが私の単体テストの一部です:
using NUnit.Framework;
using NMock;
[TestFixture]
public class PositionUnitTests
{
[Test]
public void TestPosition()
{
Mock<Position> tmpPosMock = mFactory.CreateMock<Position>();
tmpPosMock.Expects.One.GetProperty(v => v.Size).WillReturn(7); /* !!! Exception !!! System.ArgumentException : mock object position has a getter for property Size, but it is not virtual or abstract */
/* Execute Test with tmpPositions*/
PositionMetrics pm = new PositionMetrics();
double result = pm.CalcPositionMetric(tmpPosMock.MockObject)
Assert.AreEqual(14, result);
}
}
しかし、ご覧のとおり、例外が発生します。誰かがこの問題を解決するのを手伝ってくれますか? 他のソリューションも大歓迎です!
乾杯コンスタンチン