簡體   English   中英

取決於Guice Provider的測試類<T>

[英]Test class which depends on 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()被調用。

您可以使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM