Maybe I'm wrong when I say it could be a bug. So a better question is how 
can I get all the singleton even if they are annotated and not 
bind()...in(...)?
Thanks,

Romain

Le mercredi 17 avril 2013 23:12:10 UTC+2, Romain Gilles a écrit :
>
> Hi all,
> It is strange when I'm writing this unit test to validate my comprehension 
> of BindingScopingVisitor I don't get my expecting result...
> Is somebody can help me please?
> Thanks in advance,
>
> The code:
> import static org.hamcrest.MatcherAssert.assertThat;
> import static org.mockito.Mockito.times;
> import static org.mockito.Mockito.verify;
>
> import javax.inject.Singleton;
>
> import org.junit.Test;
> import org.junit.runner.RunWith;
> import org.mockito.Mock;
> import org.mockito.runners.MockitoJUnitRunner;
>
> import com.google.common.base.Supplier;
> import com.google.inject.*;
> import com.google.inject.name.Names;
> import com.google.inject.spi.DefaultBindingScopingVisitor;
>
> /**
>  * @author Romain Gilles Date: 4/17/13 Time: 10:40 PM
>  */
> @RunWith(MockitoJUnitRunner.class)
> public class GuiceBindingScopingVisitorTest {
>
>     @Mock
>     Supplier<Object> supplier;
>
>     @Test
>     public void testScopingVisitor() {
>         Injector injector = Guice.createInjector(new AbstractModule() {
>             @Override
>             protected void configure() {
>                 bind(MyInterface.class).to(MyClass.class);
>                 bind(Key.get(MyInterface.class, 
> Names.named("toto"))).to(MyClass.class).in(com.google.inject.Singleton.class);
>                 bind(Key.get(MyInterface.class, 
> Names.named("toto1"))).to(MyClass.class).in(Singleton.class);
>                 bind(Key.get(MyInterface.class, 
> Names.named("toto2"))).to(MyClass.class).in(Scopes.SINGLETON);
>             }
>         });
>         assertThat(injector.getScopeBindings(), is(not(nullValue())));
>         for (Binding<?> binding : injector.getBindings().values()) {
>             binding.acceptScopingVisitor(new 
> DefaultBindingScopingVisitor<Object>() {
>                 @Override
>                 public Object visitScope(Scope scope) {
>                     if (scope == Scopes.SINGLETON) {
>                         supplier.get();
>                     }
>                     return scope;
>                 }
>             });
>         }
>         verify(supplier, times(4)).get();
>     }
>
>     public static interface MyInterface {
>     }
>
>     @Singleton
>     public static class MyClass implements MyInterface {
>     }
> }
>
> The result:
> org.mockito.exceptions.verification.TooLittleActualInvocations: 
> supplier.get();
> Wanted 4 times:
> -> at 
> test.GuiceBindingScopingVisitorTest.testScopingVisitor(GuiceBindingScopingVisitorTest.java:54)
> But was 3 times:
> -> at 
> test.GuiceBindingScopingVisitorTest$2.visitScope(GuiceBindingScopingVisitorTest.java:48)
>
>
> My conclusion:
> It seems that @Singleton annotation is not handle as an Scope but I think 
> it is a bug not?
>
> Regards,
>
> Romain
>

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


Reply via email to