0

这个问题是关于对预定方法进行单元测试的。

我正在使用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:execute 内部的逻辑需要独立于调度程序进行测试吗?

4

1 回答 1

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
}
于 2018-07-23T05:10:41.393 回答