PureMVC / сложный asMock - PullRequest
       12

PureMVC / сложный asMock

0 голосов
/ 22 апреля 2011

Хорошо - у меня есть немного сложная настройка asMock здесь; У меня есть асинхронная команда PureMVC, которая пытается вызвать другой класс, который реализует интерфейсы, чтобы настроить некоторые asmocks для разработки без серверной части.

import test.mix.common.business.MockInterbahnServiceFactory;

public class InitMockInterbahnServiceFactory extends AsyncCommand{
     public static var mockServiceFactory:MockInterbahnServiceFactory = new MockInterbahnServiceFactory();

    override public function execute(notification:INotification):void{
        var serviceResult:IEventDispatcher = mockServiceFactory.mockRepository.prepare([EchoBusinessObjects, SendBusinessObjects]);
        //serviceResult.addEventListener(Event.COMPLETE, onComplete);



    }

    private function onComplete(event:Event):void{
        mx.controls.Alert.show("COMPLETE!");
        var logMessage:String = "4  MOCK   SERVICE FACTORY MOCKED !!!!!";
        sendNotification( MixConstants.LOG_OUTPUT, logMessage );    
        //sendNotification(MixConstants.INTERBAHN_CONNECTED, mockServiceFactory);
    //  commandComplete() ;
    }
}

Это на самом деле пытается настроить MockRepositoryFactory:

public class MockInterbahnServiceFactory implements ServiceFactory
{
    [Mock] public static var withMocks : Array = [
        SendBusinessObjects, EchoBusinessObjects
    ];

    //public static var mockRepository:MockRepository ;//= new MockRepository();
    public var mockSendBusinessObjects:SendBusinessObjects;
    public var mockEchoBusinessObjects:EchoBusinessObjects ;
    public var mockRepository:MockRepository;



    public function MockInterbahnServiceFactory(){
        mockRepository = new MockRepository();
        prepareMocks();
    }

    public function prepareMocks():void{
        var prepareDispatcher:IEventDispatcher = mockRepository.prepare([SendBusinessObjects, EchoBusinessObjects]);
        prepareDispatcher.addEventListener(Event.COMPLETE, setupMocks);
    }

    public function setupMocks(event:Event):void{
        mockSendBusinessObjects = SendBusinessObjects(mockRepository.create(SendBusinessObjects));
        mockEchoBusinessObjects = EchoBusinessObjects(mockRepository.create(EchoBusinessObjects));

        SetupResult.forCall(mockSendBusinessObjects.sendOrder(new Order())).returnValue('wee');

    }

    public function createSendBusinessObjectService():SendBusinessObjects{

        return mockSendBusinessObjects;
    }

    public function createEchoBusinessObjectService():EchoBusinessObjects{

        return mockEchoBusinessObjects;
    }

}

}

И в какой-то момент эта фабрика будет передана и использована для конечных точек отправки / получения для множественных коммуникаций (истинный бэкэнд - это scala).

Я получаю эту ошибку:

ArgumentError: returnValue must be assignable from :void
at asmock.framework.expectations::AbstractExpectation/set returnValue()[C:\Users\Richard\SVN\asmock\trunk\source\ASMock\src\asmock\framework\expectations\AbstractExpectation.as:107]
at asmock.framework::MethodOptions/returnValue()[C:\Users\Richard\SVN\asmock\trunk\source\ASMock\src\asmock\framework\MethodOptions.as:134]
at test.mix.common.business::MockInterbahnServiceFactory/setupMocks()[/Users/grimm/Documents/__WORK/__INVESTLAB/MIX/trunk/src/test/mix/common/business/MockInterbahnServiceFactory.as:56]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at Function/org.floxy:ProxyRepository/org.floxy:IProxyRepository:prepare/org.floxy:swfLoadedHandler()[C:\transfer\IdeaProjects\as3-interbahn\floxy\main\as3\src\org\floxy\ProxyRepository.as:218]

Я предполагаю, что это из-за функций интерфейса, которые я заглушаю?

public interface SendBusinessObjects {
     function sendFirmExchangePermission(frp:FirmExchangePermission):void ; 
     function sendFirm(f:Firm):void ;
     function sendExchange(ex:Exchange):void ;
     function sendFXConversion(fx:FXConversion):void ;
     function sendInstrument(ins:Instrument):void ;
     function sendQuote(q:Quote):void ;

1 Ответ

1 голос
/ 21 мая 2011

Мне кажется, SendBusinessObjects возвращает void, но вы звоните returnValue, когда вы издеваетесь над ним.Удалите вызов returnValue('wee'), и он должен работать как положено.

...