Wow ! I got it ! I can see the light at the end of the tunnel now :)
That makes sense, we will have a setter method in the X class which will
inject this object by creating a new instance .
Also, as per jnuit we don't have to test setter method so we can skip the
code coverage for that setter method in X. Thanks for clarifying this .

Thanks,
Vikram

On Wed, Feb 15, 2017 at 8:02 AM, Sang Shin <[email protected]>
wrote:

>
>
> On 2/14/2017 4:11 PM, VikramSrinivasan Venkatakrishnan wrote:
>
> I have got the part with how the Mocking works, it's just that I am trying
> to understand how to refactor a code by using Dependency injection . My
> question is , even if there is dependency injection in a class A where the
> injected object O is passed to it's constructor , The object O should be
> created in some X class so it can be injected to A's constructor or set in
> a setter method. Now does that mean we can't unit test that X class mocking
> this O object because we are creating a new instance of O there ?
>
>
> Good question.   If the X does not use object O in its logic, in other
> words, it does not
> call the method of the O, there is no need to mock the behavior of O,
> hence injecting
> O or creating O does not have any consequence to the unit testing of X.
>
> -S
>
>
>
>
> Thanks,
> Vikram
>
> On Tue, Feb 14, 2017 at 12:25 PM, Sang Shin <[email protected]>
> wrote:
>
>>
>> I made a bit confusing statement at the end.  I clarified a bit.
>>
>> But lets say the Person object is created in a Request Handler class.
>> While testing RequestHandler we wont be able to mock the objects right ? I
>> hope you got my question. How do we handle this ?
>>
>>
>> You do mocking only during testing.  The code below is in non-testing
>> (production)
>> environment and has nothing to do with testing.  (In fact, even if you do
>> not
>> have any dependency injection scheme mentioned above, you can still inject
>> dependency to the target class.)
>>
>>
>> I meant to say "(In fact, even if you do not
>> have any dependency injection scheme mentioned above, you can still inject
>> dependency to the target class via mocking.)"  In other words, even if you
>> do not have the constructor method in which Address object is passed
>> as a constructor argument, you can still inject Address object to the
>> Person object via @InjectMocks.  Of course, if you do this, the production
>> code will not work. :-)
>>
>> -Sang
>>
>>
>>
>> I will demonstrate this during our March 1st
>> codecamp if you want.
>>
>> -S
>>
>>
>>
>> RequestHandler.java
>>
>> public void process (Person person){
>>    Address address = new Address;
>>    person = new Person (address);
>>    person.getPersonAddressInfo();
>> }
>>
>>
>> Thanks,
>> Vikram
>>
>> On Mon, Feb 13, 2017 at 6:58 PM, VikramSrinivasan Venkatakrishnan <
>> [email protected]> wrote:
>>
>>> Please assist with my below question.
>>>
>>> Let's say we are refactoring the Person class.
>>>
>>> Before Person class:
>>>
>>> Person.java has a method ,
>>>
>>> public String getPersonAddressInfo(){
>>> Address address = new Address ();
>>> return address.getInfo();
>>>
>>> }
>>>
>>> After refactor Person class:
>>>
>>> @Autowired
>>> Address address;
>>>
>>> public String getPersonAddressInfo(){
>>> return address.getInfo();
>>>
>>> }
>>>
>>> Now , if we write a junit as below, mocking the address object,
>>>
>>> @Mock
>>> Address address;
>>>
>>> @Inject Mock
>>> Person person;
>>>
>>>
>>> @setup{ required code}
>>>
>>> @Test public void
>>> should_return_adress_info_as_something(){
>>>     Mockito.when(address.getInfo()),thenReturn("Westbrough,MA");
>>>     assertThat(person.getPersonAddressInfo, equalTo("Westborough,MA"));
>>> }
>>>
>>> The method should_return_adress_info_as_something works only for the
>>> After class and not Before class. Why is this the case ? Is it because we
>>> are creating a new object in the Before Person Class ?
>>>
>>> Now, in the After class example that was given, let's say my prod app is
>>> not on spring framework , how would i get an instance of my address object ?
>>>
>>> Kindly assist.
>>>
>>> Thanks,
>>> Vikram
>>>
>>>
>>
>> --
>> -------------------------------------------------------------------
>>              Sang Shin, [email protected]
>>          http://www.linkedin.com/in/javapassion (Linkedin)
>>           http://twitter.com/javapassion (Tweeter)
>>             Life is worth living... with Passion!
>> ----------------------------------------------------------------------
>>
>> --
>> -------------------------------------------------------------------
>>              Sang Shin, [email protected]
>>          http://www.linkedin.com/in/javapassion (Linkedin)
>>           http://twitter.com/javapassion (Tweeter)
>>             Life is worth living... with Passion!
>> ----------------------------------------------------------------------
>>
>> --
> -------------------------------------------------------------------
>              Sang Shin, [email protected]
>          http://www.linkedin.com/in/javapassion (Linkedin)
>           http://twitter.com/javapassion (Tweeter)
>             Life is worth living... with Passion!
> ----------------------------------------------------------------------
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"JPassion.com: Java Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/group/jpassion_java.
For more options, visit https://groups.google.com/d/optout.

Reply via email to