【发布时间】:2020-04-29 07:59:37
【问题描述】:
在尝试对服务方法进行单元测试时,它实现的基本抽象类构造函数包含 2 个参数。我想在使用 Auto-fixture 调用服务时自定义这些参数。
基本服务代码如下。
public abstract class ServiceBase : IHostedService, IDisposable
{
private readonly CronExpression _expression;
private readonly TimeZoneInfo _timeZoneInfo;
protected BaseService(string cronExpression, TimeZoneInfo timeZoneInfo)
{
_expression = CronExpression.Parse(cronExpression);
_timeZoneInfo = timeZoneInfo;
}
public abstract Task ExecuteTask(CancellationToken cancellationToken);
.
.
}
另一个服务继承自这个基础抽象类
public class TestService : ServiceBase
{
public override async Task ExecuteTask(CancellationToken stoppingToken)
{
//Implementation here
}
}
在我的单元测试中,我正在调用ExecuteTask 函数,如下所示
Func<Task> executeAction = async () => await sut.ExecuteTask(A<CancellationToken>._);
executeAction.Should().NotThrow();
AutoFixture 尝试将随机字符串传递给BaseService 类中的CronExpression 构造函数参数。问题是这个CronExpression 必须采用特定格式,否则在尝试解析它时会发生错误CronExpression.Parse(cronExpression)
如何为构造函数参数传递自定义值?
提前致谢。
【问题讨论】:
标签: c# .net-core abstract-class mstest autofixture