我正在做一个项目,并为HttpHandlers编写单元测试。关于运行测试此行
BackgroundJob.Schedule(() => PokeRequestedChat(c.Id, 1), TimeSpan.FromSeconds(60));
字符串给出异常ex=>**{“作业存储。当前属性值尚未初始化。您必须在使用Hangfire客户端或服务器API之前设置它。"}**否则项目在服务器上运行正常。此异常仅在运行xUnit测试时发生。我是C#新手,对hangfire一无所知。
jfgube3f1#
你不能编写BackgroundJob.Schedule方法的单元测试,因为你需要一个Hangfire的主机,并且Hangfire需要在你的应用中注册,你可以尝试为Hangfire编写集成测试。或者只是测试你的PokefittedChat方法,或者在BackgroundJob.Schedule上编写一些 Package 器并模拟它。
igetnqfo2#
通过在测试类中添加此行解决了问题
JobStorage.Current = new SqlServerStorage("connectionString");
字符串
v64noz0r3#
你可以通过下面这行代码来解决这个错误(它为JobStorage.Current创建了一个mock对象):
JobStorage.Current
JobStorage.Current = Substitute.For<SqlServerStorage>(@"Server=.\sqlexpress;Database=test;Trusted_Connection=True;");
字符串我在这个示例中使用了NSubstitute,但你可以使用Moq或其他库。
NSubstitute
Moq
sqyvllje4#
老问题,但也许有人仍然需要它:
GlobalConfiguration.Configuration.UseActivator(new Hangfire.JobActivator()); GlobalConfiguration.Configuration.UseMemoryStorage();
字符串这也设置了一个测试存储。(您将需要Hangfire.MemoryStorage包)
4条答案
按热度按时间jfgube3f1#
你不能编写BackgroundJob.Schedule方法的单元测试,因为你需要一个Hangfire的主机,并且Hangfire需要在你的应用中注册,你可以尝试为Hangfire编写集成测试。或者只是测试你的PokefittedChat方法,或者在BackgroundJob.Schedule上编写一些 Package 器并模拟它。
igetnqfo2#
通过在测试类中添加此行解决了问题
字符串
v64noz0r3#
你可以通过下面这行代码来解决这个错误(它为
JobStorage.Current
创建了一个mock对象):字符串
我在这个示例中使用了
NSubstitute
,但你可以使用Moq
或其他库。sqyvllje4#
老问题,但也许有人仍然需要它:
字符串
这也设置了一个测试存储。(您将需要Hangfire.MemoryStorage包)