Have you tried Modules.override?

Modules.override(new ProdModule()).with(new TestModule());

Fred

On Thu, Sep 6, 2012 at 1:14 PM, Cédric Beust ♔ <[email protected]> wrote:

> Hi everyone,
>
> I am considering using separate test modules for testing but I'm a bit
> bothered by the fact that Guice won't let me bind the same class to
> multiple targets. For example, assume I currently have a main module that
> binds two classes:
>
> MainModule:
> bind(A.class).to(a);
> bind(B.class).to(b);
>
> I want to test the A class, so I create an "aMock" version in TestModule:
>
> TestModule:
> bind(A.class).to(aMock);
>
> Then I try to run my tests with both MainModule and TestModule, and of
> course, Guice complains that A.class is bound twice. So now I find myself
> having to introduce a third module that contains the common bindings:
>
> CommonModule:
> bind(B.class).to(b);
>
> And I run:
>
> Production:
> CommonModule, MainModule
>
> Tests:
> CommonModule, TestModule
>
> I understand that this architecture is not necessarily bad but it's a bit
> tedious that whenever I want to test a certain class, I need to 1) remove
> it from CommonModule 2) move it to MainModule and 3) create a mock in
> TestModule.
>
> Ideally, I'd like to tell Guice to allow shadowing bindings so I can just
> place TestModule at the top of the list of modules and Guice will ignore
> duplicate bindings that it will find in MainModule. This way, I never need
> to create CommonModule. With this feature, I now have:
>
> Production:
> MainModule
>
> Test:
> TestModule, MainModule
>
> Benefits: one less module to create and less bookkeeping moving bindings
> in and out of modules.
>
> Thoughts?
>
> --
> Cédric
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "google-guice" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/google-guice?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en.

Reply via email to