fluttercommunity / get_it

Get It - Simple direct Service Locator that allows to decouple the interface from a concrete implementation and to access the concrete implementation from everywhere in your App. Maintainer: @escamoteur
https://pub.dev/packages/get_it
MIT License
1.36k stars 149 forks source link

[Feature Request] Ability to verify getIt configuration #333

Open nrobi144 opened 1 year ago

nrobi144 commented 1 year ago

Description

Requesting an unregistered object results in a runtime exception and there is no way to validate the dependency graph.

API example - Koin, a Service Locator for Kotlin

I haven't investigated the get_it implementation extensively enough, but here's an estimation of tasks involved:

  1. Add/Enforce a module structure, where you can retrieve all the bean definitions, for ex. Module.getDefinitions()
  2. Provide mocked/fake beans for the definitions
  3. Try getting the beans. If a definition isn't provided fail the test

There's also an area I'm not sure how to avoid. The last layer, for ex. ViewModel might not be defined in the configuration, so the test will result in a false-positive. Potential solution: go through all files instead of Module.getDefinitions() and mimic getIt<XY>()