如何对预定的逻辑进行单元测试?

时间:2018-07-23 04:28:53

标签: c# unit-testing integration-testing fluentscheduler

这个问题与计划方法的单元测试有关。

我正在使用FluentScheduler实现计划的作业执行。

这是我的Execute方法

public void Execute()
{
   var provisioningRepo = _containerFactory.GetInstance<IProvisioningRepo>();
   var discounts = provisioningRepo.GetDiscounts();
   if (discounts.Count == 0)
     return;

   foreach (var discount in discounts)
   {
       //doing some logics
   }    
}

这是我的调度程序的“ app.config”条目。

      <add key="myMinitueSchedule" value="60" />

问题1:如何测试在正确的时间执行的方法?那是每60秒一次?

问题2:内部执行的逻辑是否需要独立于调度程序进行测试?

1 个答案:

答案 0 :(得分:2)

根据您的问题2: 方法Execute()中的逻辑可以按以下方式进行测试: 只要超越列表discounts上的“逻辑运算”即可。然后,您可以分别对方法MakeLogicThingsWithDiscount的逻辑进行单元测试:

public void Execute()
{
   var provisioningRepo = _containerFactory.GetInstance<IProvisioningRepo>();
   var discounts = provisioningRepo.GetDiscounts();
   if (discounts.Count == 0)
     return;
   discounts = MakeLogicThingsWithDiscount(discounts);
}

private IEnumerable<Discount> MakeLogicThingsWithDiscount(IEnumerable<Discount> discounts)
{
   //make logic things here
}