戦略パターン メソッド呼び出しの単体テスト用のサンプル コードを探していました。
戦略パターン クラス LeaveCalculator があり、休暇の種類に基づいて、ファクトリ クラスが特定の計算機をインスタンス化します。
単体テストの部分では、LeaveCalculator 計算メソッドを呼び出したときに、適切な Leave タイプの計算が呼び出されることを確認しようとしています。
RhinoMocks のモックに C# を使用しています。
これを行うためのコード サンプルを教えてください。
public static class LeaveCategoryFactory
{
private static List<ILeaveCalculation> categories = new List<ILeaveCalculation>();
public static ILeaveCalculation GetCategory(LeaveCalculationType calculationType)
{
if (categories.Count == 0)
{
categories = Assembly.GetExecutingAssembly()
.GetTypes()
.Where(type => typeof(ILeaveCalculation).IsAssignableFrom(type) && type.IsClass)
.Select(type => Activator.CreateInstance(type))
.Cast<ILeaveCalculation>()
.ToList();
}
return categories.Where(x => x.CalculationType == calculationType).FirstOrDefault() as ILeaveCalculation;
}
}
[TestMethod]
public void ShouldReturnOneWhenAvailableLeaveCountIs12AndWorkedForAMonth()
{
leaveCount.StartDate = systemDateTime.Now.Date.AddMonths(-1);
leaveCount.EndDate = systemDateTime.Now.Date.AddMonths(11);
leaveCount.Count = 12;
var proRataClass = MockRepository.GenerateMock<ProRata>();
var availableLeaveCount = proRataClass.Calculate(employee, systemDateTime.Now.Date, leaveCount);
Assert.AreEqual(1, availableLeaveCount);
}