Не поймите меня неправильно! Этот вопрос задавался здесь ранее, но он не получил никакого ответа (это работает), или он также не похож на мой.
У меня есть ASP.net Web API под управлением .net 4.5, в котором используется Hangfire v1.7.2
В Startup.cs
У меня есть:
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
GlobalConfiguration.Configuration.UseSqlServerStorage("myDbConnString");
app.UseHangfireDashboard("/hangfire", new DashboardOptions()
{
Authorization = new[] { new HangfireAuthorizationFilter() }
});
app.UseHangfireServer();
}
В MyController.cs
У меня есть Hangfire enque задание, которое выполняет DoSomething ()
public async Task<IHttpActionResult> PostPerson(Person p)
{
// spin up a new dedicated thread and execut the job
BackgroundJob.Enqueue(() => DoSomething(p.Id));
return OK;
}
Если я тестирую с помощью инструмента Postman, пытающегося вызвать метод HTTPPost моего веб-API, я вижу, что мой код выполняется хорошо и все хорошо.
Однако , когда я использую NUnit Test V3
для модульного тестирования MyController.cs У меня возникла проблема при нажатии этой строки в контроллере BackgroundJob.Enqueue(() => DoSomething(p.Id));
[Test]
public void Post()
{
MyController controller = new MyController();
Person p = new Person
{
data = "hello world"
};
var actionResult = controller.PostPerson(p);
}
Трассировка стека:
в Hangfire.JobStorage.get_Current () в
Hangfire.BackgroundJob. <> C. <. Cctor> b__45_0 () в
System.Lazy 1.CreateValue() at System.Lazy
1.LazyInitValue () в
Hangfire.BackgroundJob.Enqueue (Expression`1 methodCall) в
myApp.Controllers.MyController.d__3.MoveNext ()
Сообщение об ошибке:
Значение свойства JobStorage.Current не было инициализировано. Вы должны
установите его перед использованием клиентского или серверного API Hangfire.
Пожалуйста, помогите мне разобраться с проблемой здесь и как ее исправить.
Спасибо!