gpt4 book ai didi

moq - xunit 测试中的模拟 HostingEnvironment.QueueBackgroundWorkItem

转载 作者:行者123 更新时间:2023-12-02 00:12:34 29 4
gpt4 key购买 nike

我有一个方法使用HostingEnvironment.QueueBackgroundWorkItem 我希望在此调用之前对某些行为进行单元测试,但是,测试因 System.InvalidOperationException 失败:由于对象的当前状态,操作无效。

我怀疑我需要模拟 HostingEnvironment 但不知道如何操作。

最佳答案

为了解决这个问题,我定义了一个接口(interface)

public interface ITaskScheduler
{
void QueueBackgroundWorkItem(Action<CancellationToken> workItem);
}

在生产代码中我注入(inject)实现

public class AspNetTaskScheduler : ITaskScheduler
{
public void QueueBackgroundWorkItem(Action<CancellationToken> workItem)
{
HostingEnvironment.QueueBackgroundWorkItem(workItem);
}
}

在测试代码中我注入(inject)实现

public class TaskScheduler : ITaskScheduler
{
public void QueueBackgroundWorkItem(Action<CancellationToken> workItem)
{
workItem.Invoke(new CancellationToken());
}
}

我认为这是一个不错的解决方案,因为单元测试可以工作,并且我的队列后台任务的类与 HostingEnvironment 分离。

关于moq - xunit 测试中的模拟 HostingEnvironment.QueueBackgroundWorkItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28456590/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com