0
我正在寻找一些示例代码,用于单元测试策略模式方法调用。策略模式与工厂类别单元测试
我有一个战略模式类LeaveCalculator和基于离开类型的工厂类将实例化具体的计算器。
对于单元测试部分,我试图验证在我们调用LeaveCalculator计算方法时调用适当的离开类型计算。
我使用C#模拟RhinoMocks。
请让我知道任何代码示例要做到这一点?
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);
}
这可能是更容易发布相关的代码和测试,显示你想要做什么。人们帮助会更容易。 –
我不明白这些'LeaveCategoryFactory'和你的测试方法是如何相互关联的。我认为'ProRata'是一个班级?也许它实现了'ILeaveCalculation'? 尽管有一件事立即跳出来:'LeaveCategoryFactory'是静态的。当你有静态类时,测试*任何东西都是非常困难的。 –
我想知道创建策略模式类实例的最佳选择。如果我使用静态启动器,我如何确保启动相关类? – Saanch