Значение свойства JobStorage.Current не было инициализировано - PullRequest
0 голосов
/ 13 мая 2019

Не поймите меня неправильно! Этот вопрос задавался здесь ранее, но он не получил никакого ответа (это работает), или он также не похож на мой.

У меня есть 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.

Пожалуйста, помогите мне разобраться с проблемой здесь и как ее исправить.

Спасибо!

...