I think Meghna's problem is that she has to mock the Project interface
since the DAO returns Project instead of a concrete class ProjectVO.
If we used Mockito, it would be as trivial as

return mock(Project.class)

--
Chiradeep

On 10/29/12 1:30 PM, "Alex Huang" <alex.hu...@citrix.com> wrote:

>Meghna,
>
>I see that there's MockProjectManagerImpl.  So basically, you're trying
>to mock the service itself?
>
>You can use your own components.xml that has all the Mock classes.  Take
>a look at components.xml, it has a reference to DefaultComponentLibrary
>which contains code to return different managers.  You don't have to
>write your own componentlibrary because the components.xml can also
>specify manager implementations.  You can add the following:
>
><manager name="name" class="class"/>
>
>You can even pass paramters to the implementation.
>
><manager name="name" class="class">
>  <param name="name">"value"</param>
></manager>
>
>So in this case, you probably want something like
>
><manager name="ProjectManager"
>class="com.cloud.projects.MockProjectManagerImpl">
>  <param name="abc">def</param>
></manager>
>
>You can also write your own components.xml and set the following
>parameter in environment.properties to reference your components.xml.
>
>cloud-stack-components-specification=[path to your own components.xml]
>
>Let me know if you have any questions.
>
>
>--Alex
>
>> -----Original Message-----
>> From: Meghna Kale [mailto:meghna.k...@sungard.com]
>> Sent: Monday, October 29, 2012 12:23 PM
>> To: Chiradeep Vittal
>> Cc: cloudstack-dev@incubator.apache.org; Alex Huang
>> Subject: RE: need help for test cases of api/commands
>> 
>> I was trying with mocks.
>> 
>> -----Original Message-----
>> From: Chiradeep Vittal [mailto:chiradeep.vit...@citrix.com]
>> Sent: Tuesday, October 30, 2012 12:04 AM
>> To: CloudStack DeveloperList; Alex Huang
>> Subject: Re: need help for test cases of api/commands
>> 
>> Are you writing mocks, or are you planning to use a framework like
>>Mockito?
>> 
>> On 10/29/12 11:29 AM, "Meghna Kale" <meghna.k...@sungard.com> wrote:
>> 
>> >Alex,
>> >
>> >A method from ActivateProjectCmd.java, the projectService call.
>> >
>> >     @Override
>> >
>> >    public long getEntityOwnerId() {
>> >
>> >        Project project= _projectService.getProject(id);
>> >
>> >        //verify input parameters
>> >
>> >        if (project == null) {
>> >
>> >                     throw new InvalidParameterValueException("Unable
>> >to find project by id " + id);
>> >
>> >        }
>> >
>> >       return _projectService.getProjectOwner(id).getId();
>> >
>> >    }
>> >
>> >
>> >
>> > I created a mock class of the service
>> >
>> >
>> >
>> >@Local(value = { ProjectService.*class* })
>> >
>> >*public* *class* MockProjectServiceImpl *implements* ProjectService,
>> >Manager{
>> >
>> >    public static final Logger s_logger =
>> >Logger.getLogger(MockProjectServiceImpl.class);
>> >
>> >
>> >
>> >       @Override
>> >
>> >       *public* *boolean* deleteProject(*long* id) {
>> >
>> >              // *TODO* Auto-generated method stub
>> >
>> >              *return* *false*;
>> >
>> >       }
>> >
>> >
>> >
>> >       @Override
>> >
>> >       *public* Project getProject(*long* id) {
>> >
>> >              // *TODO* Auto-generated method stub
>> >
>> >
>> >
>> >         // We Cannot mock the Project object as it an interface and
>> >return from this method.
>> >
>> >              *return* *null*;
>> >
>> >       }
>> >
>> >ŠŠŠŠ..
>> >
>> >
>> >
>> >}
>> >
>> >
>> >
>> >--   -  Meghna.
>> >
>> >
>> >
>> >
>> >On Mon, Oct 29, 2012 at 11:42 PM, Alex Huang <alex.hu...@citrix.com>
>> >wrote:
>> >
>> >> Meghna,
>> >>
>> >> Can you give an example of which call you're talking about and point
>> >> out the specific line of code you're having problem with?
>> >>
>> >> Thanks.
>> >>
>> >> --Alex
>> >>
>> >> > -----Original Message-----
>> >> > From: Meghna Kale [mailto:meghna.k...@sungard.com]
>> >> > Sent: Monday, October 29, 2012 9:51 AM
>> >> > To: cloudstack-dev@incubator.apache.org
>> >> > Subject: need help for test cases of api/commands
>> >> >
>> >> > Hi All,
>> >> >
>> >> >
>> >> >
>> >> > I was writing some test cases for the API layer
>> >> > api\src\com\cloud\api\commands.
>> >> >
>> >> > I facing some issue can someone help me.
>> >> >
>> >> >
>> >> >
>> >> > There are some service layer calls in the classes , I tried to mock
>> >>the
>> >> service
>> >> > layer.
>> >> >
>> >> > The Service layer internally calls the DAO, rather than calling the
>> >>mock
>> >> DAO I
>> >> > was thinking  of returning the object from the service layer.
>> >> >
>> >> > But as the return value of the DAO is an interface in the service
>> >>layer
>> >> I'm not
>> >> > able to mock the object and pass it on to the API layer.
>> >> >
>> >> >
>> >> >
>> >> > Is any other way or I will have to mock the DAO layer also ?
>> >> >
>> >> >
>> >> >
>> >> > -          Meghna.
>> >>
>> >>

Reply via email to