Тестовый класс, который зависит от Guice Provider<T>

Как проверить класс, который зависит от Provider<>? Пожалуйста, смотрите код ниже.

class ToTest {

    @Inject
    Provider<Processor> processorProvider;

    public buildData() {
        processorProvider.get().process();
    }

    class ProcessorProviderImpl implements Provider<Processor> {
        @Inject
        private Handler someHandler;

        public Processor get() {
            return new MyProcessor(somehandler)
        }
    }

    public static class TestModule extends JukitoModule {
        @Override
        protected void configureTest() {
            bind(Processor.class).toProvider(
                    ProcessorInstanceProviderImpl.class);
            bindMock(SubHandler.class).in(TestSingleton.class);
        }
    }

    class Handler {
        @Inject
        private SubHandler subHandler; // this is singleton instance
    }
}

Поэтому, когда я издеваюсь subHandler это не работает, и когда я запускаю модульный тест, я получаю NullPointerException где subHandler.handle() вызывается.

1 ответ

Вы можете использовать Providers.of(), чтобы инициализировать processorProvider с поставщиком вашего экземпляра соавтора.

https://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/util/Providers.html

test = new ToTest();
test.processorProvider = Providers.of(processorMock);
Другие вопросы по тегам