0 Replies Latest reply on Nov 10, 2011 9:13 AM by clem_c_rok

    Mockito problems - Please make sure you specified a call to stub in given

    clem_c_rok Level 1

      Mockito problems - Please make sure you specified a call to stub in given

      Hello,

          I'm trying to get a handle on mocking w/ Mockito to and I keeping getting this error:

      "Please make sure you specified a call to stub in given".  Also, I cannot get mockito to work unless I add the mock directive

      outside the class:

       

       

      [code]

      [Mock(type="common.services.ScaleService")]

      [/code]

       

       

      Here's a copy of my code:

       

       

      [code]

      package TDMSETestSuites.organWeights.tests

      {

                import common.interfaces.IScaleService;

                import common.services.ScaleService;

       

                import flash.events.EventDispatcher;

                import flash.utils.Timer;

       

                import flexunit.framework.Assert;

       

                import mx.collections.ArrayCollection;

                import mx.rpc.AsyncToken;

                import mx.rpc.events.FaultEvent;

                import mx.rpc.events.ResultEvent;

                import mx.rpc.remoting.mxml.RemoteObject;

                import mx.rpc.remoting.test.RemoteObjectStub;

       

                import org.flexunit.async.Async;

                import org.flexunit.async.TestResponder;

                import org.flexunit.rules.IMethodRule;

                import org.hamcrest.core.*;

                import org.mockito.Mockito;

                import org.mockito.integrations.*;

                import org.mockito.integrations.flexunit4.MockitoRule;

                import org.spicefactory.parsley.core.context.Context;

                import org.spicefactory.parsley.dsl.context.ContextBuilder;

                import org.spicefactory.parsley.flex.FlexConfig;

       

                //so far, this, declaration, at this level is the only way it works- WHY??

                [Mock(type="common.services.ScaleService")]

       

                public class ScaleServiceTest extends TDMSETestBase

                {

                          [Rule]

                          public var mockitoRule:IMethodRule = new MockitoRule();//mockito crucial

       

                          [Inject(id="roScale")]

                          public var injectedScaleRemoteObject:RemoteObject;

       

                          [Inject]

                          public var injectedScaleService:IScaleService;

       

                          [Inject]

                          public var iScaleService:IScaleService;

       

                          public var scaleService:ScaleService;

       

                          //---- mockito properties --------------------------------

                          //--------------------------------------------------------

                          private var mockScaleService:ScaleService;

       

                          private var mockScaleIService:IScaleService;

                          private var mockito:Mockito = new Mockito();

       

       

                          public var context:Context;

                          private var fault:Boolean=Boolean(false);

                          private var resultCheckTimer:Timer;

       

       

                          // The timer and result check timeouts

                          private static const TIMEOUT_MS:int = 4000;

                          private static const RESULT_CHECK_TIMEOUT_MS:int = 3500;

       

                          [Before]

                          public function setUp():void

                          {

                                    //create base TDMSE parsley context

                                    context = ContextBuilder.newBuilder()

                                              .config(FlexConfig.forClass(TDMSEAppParsleyConfig))

                                              .object(this)

                                              .build

       

       

                                    scaleService = new ScaleService();

                                    mockScaleService = mock(ScaleService);

                          }

       

                          //---- MOCHITO TESTS ------------------------------------------------------------

                          //----------------------------------------------------------------------------- --

                          [Test(async)]

                          public function mockitoGetScaleData1():void

                          {

                                    var token:AsyncToken = mockScaleService.getScaleData(faultHandler);

                                    mockito.given(mockScaleService.getScaleData).willReturn(token);

                                    mockito.verify().that(mockScaleService.getScaleData(faultHandler));

                          }

                          //----------------------------------------------------------------------------- -

                }

      }

      [/code]

       

       

      here's the service class and method it's testing:

       

       

      [code]

                public class ScaleService extends EventDispatcher implements IScaleService

                {

                          [Inject(id="roScale")]

                          public var scaleService:RemoteObject;

       

       

       

       

                          public function getScaleData(getScaleDataFaultHandler:Function):AsyncToken

                          {

                                    return scaleService.getScaleData().addResponder(new AsyncResponder(getScaleData_result, getScaleDataFaultHandler));

                          }

                }

      [/code]

       

       

      I'm completely stumped here and have been googling for days!!

       

       

      -E