Home > FLEX, Java, Red5 > Testowanie zdalnych metod w Flex

Testowanie zdalnych metod w Flex

Moim zadaniem jest przetestowanie działania zdalnych metod Java uruchamianych w Flex, np.:
netConnection.call( "calculatorService.add", new Responder( onAdd ), 2, 2 );
Do tworzenia testów jednostkowych w Flex zalecana jest biblioteka FlexUnit. Wkładając ten kod do FlexUnit, zauważmy, że nie radzi on sobie z metodami asynchronicznymi – chyba że je specjalnie zaznaczymy:
netConnection.call( "calculatorService.add", new Responder( addAsync(onAdd,5000) ), 2, 2 );
Jednak to jeszcze nie działa. Metoda addAsync dostosowana jest do pracy z zdarzeniami. Próbując uruchomić ten kod otrzymam błąd: TypeError: Error #1034: Type Coercion failed: cannot convert "4" to flash.events.Event. Poradziłem sobie z tym w następujący sposób:
netConnection.call("calculatorService.add", new Responder( myAddAsync( testSum ) ), 2, 2 );

public function testSum(a:Number):void {
  assertEquals(4,a);
}

// 
public function myAddAsync(f:Function):Function {
  // wyciąga dane z eventa
  var f1:Function = function(e:DynamicEvent):void { 
    f.call(this,e.result);
  }
  // buduje asynchroniczną funkcję, operującą na zdarzeniach
  var f2:Function = addAsync(f1, 5000);
  // pakuje odpowiedź serwera do zdarzenia
  var f3:Function = function(a:*):void {
    var e:DynamicEvent = new DynamicEvent("MyDynamicEvent");
    e.result = a;
    f2.call(this, e);
  }
  return f3;
}
Ta ostatnia funkcja wygląda dość dziwnie – ale robi to co musi. Daje mi możliwość budowania testów integracyjnych – współpraca Flex’a z serwerem Red5.
Categories: FLEX, Java, Red5 Tags:
  1. No comments yet.
  1. No trackbacks yet.

Subscribe without commenting