2010-12-30 4 views
0

Ich kann meinen Fehler nicht finden, hoffe, dass mir jemand helfen kann. Ich versuche, meine ActionScript-Anwendung mit ASMock zu testen. Ich möchte einen asynchronen Test durchführen, aber ich bekomme meine verspottete Funktion nicht zu versenden. das ist, was ich getan habe:Kann ASMock nicht zu Dipatch-Ereignissen bringen

[Test(async,timeout="5000")] 
public function testFailedIDResponse() : void { 
    var mockRepository : MockRepository = new MockRepository(); 

// Nehmen

var oMock:ConnectionProcessor = ConnectionProcessor(mockRepository.createStub(ConnectionProcessor)); 
oMock.addEventListener("ConnectionProcessor.LOGICALERROR", Async.asyncHandler(this, onWrongID, 5000)); 
SetupResult.forCall(oMock.logigalErrorCode).returnValue("NOT_FOUND"); 
SetupResult.forEventDispatcher(oMock); 
SetupResult.forCall(oMock.load()).dispatchEvent(new Event("ConnectionProcessor.LOGICALERROR")); 
mockRepository.replayAll(); 
oMock.load(); 

aber das Ereignis kommt nie an meinem onWrongID Handler. wo ist mein Fehler? vielen Dank Jungs!

+0

FYI, der Aufruf von 'forEventDispatcher' ist nicht erforderlich, da' createStub' das standardmäßig für Sie erledigt. –

Antwort

0

Sie müssen nur die dispatchEvent-Methode von Ihrem verspotteten Objekt aufrufen.

z.B.

oMock.dispatchEvent(new Event("ConnectionProcessor.LOGICALERROR")); 

Dann wird Ihre Klasse/Methode/... im Test in der Lage sein, das Ereignis zu behandeln.

oder wenn Sie erwarten, dass die Load-Methode in irgendwo aufgerufen werden, bevor Sie mit

Expect.call(oMock.load()).dispatchEvent(new Event("ConnectionProcessor.LOGICALERROR")); 

Hoffnung, die dazu beigetragen arbeiten können. br,

1

Sie müssen Ihren Anruf zu addEventListener bis nach replayAll verschieben. So wie es aussieht, notiert es nur Ihren Anruf an addEventListener.

Verwandte Themen