asp.net BackgroundJob.计划抛出异常

zqdjd7g9  于 2023-11-20  发布在  .NET
关注(0)|答案(4)|浏览(81)

我正在做一个项目,并为HttpHandlers编写单元测试。关于运行测试此行

BackgroundJob.Schedule(() => PokeRequestedChat(c.Id, 1), TimeSpan.FromSeconds(60));

字符串
给出异常ex=>**{“作业存储。当前属性值尚未初始化。您必须在使用Hangfire客户端或服务器API之前设置它。"}**否则项目在服务器上运行正常。此异常仅在运行xUnit测试时发生。
我是C#新手,对hangfire一无所知。

jfgube3f

jfgube3f1#

你不能编写BackgroundJob.Schedule方法的单元测试,因为你需要一个Hangfire的主机,并且Hangfire需要在你的应用中注册,你可以尝试为Hangfire编写集成测试。或者只是测试你的PokefittedChat方法,或者在BackgroundJob.Schedule上编写一些 Package 器并模拟它。

igetnqfo

igetnqfo2#

通过在测试类中添加此行解决了问题

JobStorage.Current = new SqlServerStorage("connectionString");

字符串

v64noz0r

v64noz0r3#

你可以通过下面这行代码来解决这个错误(它为JobStorage.Current创建了一个mock对象):

JobStorage.Current = Substitute.For<SqlServerStorage>(@"Server=.\sqlexpress;Database=test;Trusted_Connection=True;");

字符串
我在这个示例中使用了NSubstitute,但你可以使用Moq或其他库。

sqyvllje

sqyvllje4#

老问题,但也许有人仍然需要它:

GlobalConfiguration.Configuration.UseActivator(new Hangfire.JobActivator());
GlobalConfiguration.Configuration.UseMemoryStorage();

字符串
这也设置了一个测试存储。(您将需要Hangfire.MemoryStorage包)

相关问题