import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.wamblee.general.ObjectSerializationUtils;
import org.wamblee.inject.Injector;
import org.wamblee.inject.InjectorBuilder;
import org.wamblee.inject.InjectorFactory;
public class InjectionBehaviorTest {
- Component component;
- Injector injector;
- InjectorFactory injectorFactory;
+ private Component component;
+ private Injector injector;
+ private InjectorFactory injectorFactory;
@Before
public void setUp() {
@Test
public void testNoInjectionInitially() {
- InjectionBehavior behavior = new InjectionBehavior();
- behavior.beforeRender(component);
+ Component component = mock(Component.class);
+ InjectionBehavior behavior = new InjectionBehavior(component);
+ behavior.beforeRender(component);
verifyNoMoreInteractions(injector);
}
-
+
@Test
- public void testInjectOnlyOnceAfterDeserialisation() throws Exception {
- InjectionBehavior behavior = new InjectionBehavior();
-
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- ObjectOutputStream os = new ObjectOutputStream(bos);
- os.writeObject(behavior);
- os.flush();
- ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
- ObjectInputStream ois = new ObjectInputStream(bis);
- behavior = (InjectionBehavior)ois.readObject();
-
- behavior.beforeRender(component);
- verify(injector).inject(same(component));
+ public void testInjectOnlyOnceAfterDeserialisation() throws Exception {
+ Component component = mock(Component.class);
+ InjectionBehavior behavior = new InjectionBehavior(component);
+
+ behavior = ObjectSerializationUtils.deserialize(
+ ObjectSerializationUtils.serialize(behavior),
+ InjectionBehavior.class);
+
+ verify(injector).inject(any(Component.class));
reset(injector);
- behavior.beforeRender(component);
+ behavior.beforeRender(component);
verifyNoMoreInteractions(injector);
}