Domanda

Supponi di avere un test flexunit simile a questo:

package foo {
    import flexunit.framework.TestCase;
    import flash.utils.getDefinitionByName;
    import flash.utils.getQualifiedSuperclassName;
    class DescribeTypeTest {
      public function testDescribeInnerType():void {
        var currentInstance:ChildBar = new ChildBar();
        trace(getDefinitionByName(getQualifiedSuperclassName(currentInstance)));
      }
    }
}
class Bar{}
class ChildBar extends Bar{}

Che genera l'eccezione " Errore n. 1065: la barra delle variabili non è definita. " Si applica solo alle classi interne (classi esterne al pacchetto).

Qualcuno ha un modo per farlo funzionare?

È stato utile?

Soluzione

Non sono sicuro se esiste qualche soluzione alternativa, ma solo per confermare:

http: //livedocs.adobe .com / flash / 9,0 / ActionScriptLangRefV3 / flash / utils / package.html # getDefinitionByName () :

  

funzione getDefinitionByName ()
  funzione pubblica   getDefinitionByName (name: String): Object   Versione lingua: ActionScript 3.0   Versioni runtime: AIR 1.0, Flash   Giocatore 9 Restituisce un riferimento a   oggetto class della classe specificata da   il parametro name.

     

I parametri

     

name: String & # 8212; Il nome di una classe.   Restituisce l'oggetto & # 8212; Restituisce un riferimento   all'oggetto classe della classe   specificato dal parametro name.

     

Genera Errore di riferimento & # 8212; Nessun pubblico   la definizione esiste con il specificato   nome.

Dato che sia Bar che ChildBar non sono pubblici, stai ottenendo quel ReferenceError.

Altri suggerimenti

Ho appena testato il seguente codice con Flex 3.3 (app AIR):

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
    creationComplete="t();">
    <mx:Script>
        <![CDATA[
            import flash.utils.describeType;
            import flash.utils.getQualifiedSuperclassName;
            private function t():void {
                trace(getDefinitionByName(getQualifiedSuperclassName(new FooBar())));
            }
        ]]>
    </mx:Script>
</mx:WindowedApplication>

Bar.as

package
{
    public class Bar
    {
    }
}

FooBar.as

package
{
    public class FooBar extends Bar
    {
        public function FooBar()
        {
            super();
        }        
    }
}

Come risultato della traccia vedo:

[SWF] DefTest.swf - 1,024,228 bytes after decompression
[class Bar]

Puoi confermarlo? Questo aiuta?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top