Ejemplo n.º 1
0
def get_injector_for_testing(
        providers: Mapping,
        additional_settings: Dict = None,
        overrides_registry: Optional[OverridesRegistryBase] = None
) -> Injector:
    """
    Return an :class:`Injector` using a fake crawler.
    Useful for testing providers
    """
    class MySpider(Spider):
        name = "my_spider"

    settings = Settings({
        **(additional_settings or {}), "SCRAPY_POET_PROVIDERS":
        providers
    })
    crawler = Crawler(MySpider)
    crawler.settings = settings
    spider = MySpider()
    spider.settings = settings
    crawler.spider = spider
    return Injector(crawler, overrides_registry=overrides_registry)