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