0

わかりました - ここでは asMock のセットアップが少し複雑です。バックエンドなしで開発用にいくつかの asmocks を設定するために、インターフェイスを実装する別のクラスを呼び出そうとする PureMVC 非同期コマンドがあります。

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;
    }

}

}

そして、ある時点で、このファクトリは渡され、複数の通信用の送信/受信エンドポイントに使用されます (真のバックエンドはスカラ 1 です)。

次のエラーが表示されます。

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 ;
4

1 に答える 1

1

SendBusinessObjectsreturn void のように見えreturnValueますが、呼び出しを嘲笑しているときに呼び出しています。returnValue('wee')呼び出しを削除すると、期待どおりに機能するはずです。

于 2011-05-21T15:06:35.763 に答える