Я не могу протестировать надежный сервис / актера, просто вызвав его конструктор, а затем протестировав его методы. var testService = new SomeService();
генерирует исключение NullReferenceException. Итак, что я могу сделать с развернутой Службой ..
Я понимаю, что развернутые SF Reliable Services / Actors не являются стандартными классами .NET, и модульное тестирование развернутого S / A может быть странной идеей.
В любом случае теперь я пытаюсь попробовать.
Например. Я только что развернул Службу, а в тесте я создал объект Прокси и добавил элемент во входную очередь Службы. Затем мне нужно утверждать, что количество входных очередей = 1. И это работает, если я только что развернул службу, и никакие другие клиенты / службы / участники не использовали ее входную очередь. Но в следующий раз, когда этот тест будет провален, вот в чем проблема. Мне нужно, чтобы Служба перестала работать с другими потребителями, сбросила очередь и затем протестировала ее. Для этого я могу создать свойство TestMode и некоторые методы, такие как PropareoForTests / TestingCompleted, и вызывать их из тестового клиента до и после тестирования.
Неужели это плохая идея? Может быть, есть какие-то рекомендации по модульному тестированию SF? Спасибо.
ОБНОВЛЕНИЕ:
Изучая пример веб-справочного приложения Service Fabric, я обнаружил эту строку TODO:
/// TODO: Temporary property-injection for an IServiceProxyWrapper until constructor injection is available.
Означает ли это, что SF Services улучшат поддержку DI? А что насчет актеров?