Я искал пример кода для модульного тестирования вызова метода шаблона стратегии.Шаблон стратегии с заводским классом Тестирование модуля
У меня есть класс шаблона стратегии 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