Skip to content

Instantly share code, notes, and snippets.

@s9tpepper
Created July 20, 2011 05:36
Show Gist options
  • Save s9tpepper/1094408 to your computer and use it in GitHub Desktop.
Save s9tpepper/1094408 to your computer and use it in GitHub Desktop.
Getting a Stage reference in FlexUnit test for AS3-only project
// This is in an ActionScript Project in Flash Builder
// Inside FlexUnitApplication.as I added a UI testing environment
// In the builder I pass in a reference to the FlexUnitApplication instance
package
{
import com.project.MyClassTests;
import flash.display.Sprite;
import flexunit.flexui.FlexUnitTestRunnerUIAS;
import org.fluint.uiImpersonation.IVisualEnvironmentBuilder;
import org.fluint.uiImpersonation.IVisualTestEnvironment;
import org.fluint.uiImpersonation.VisualTestEnvironmentBuilder;
public class FlexUnitApplication extends Sprite
{
static private var environment:IVisualTestEnvironment;
public function FlexUnitApplication()
{
onCreationComplete();
}
static public function get uiTestEnvironment():IVisualTestEnvironment
{
return environment;
}
private function onCreationComplete():void
{
_buildUITestEnvironment();
var testRunner:FlexUnitTestRunnerUIAS=new FlexUnitTestRunnerUIAS();
this.addChild(testRunner);
testRunner.runWithFlexUnit4Runner(currentRunTestSuite(), "my_project");
}
private function _buildUITestEnvironment():void
{
var testEnvironment:IVisualEnvironmentBuilder = VisualTestEnvironmentBuilder.getInstance(this);
environment = testEnvironment.buildVisualTestEnvironment();
}
public function currentRunTestSuite():Array
{
var testsToRun:Array = new Array();
testsToRun.push(com.project.MyClassTests);
return testsToRun;
}
}
}
// Then in my TestCase [Before] method instead of UIImpersonator I used the
// test environment created in FlexUnitApplication
Before(async, ui, timeout="1000")]
public function setUp():void
{
_spriteSubclassUnderTest = new MySpriteSubclass();
Async.proceedOnEvent(this, _spriteSubclassUnderTest, Event.ADDED_TO_STAGE, 1000);
FlexUnitApplication.uiTestEnvironment.addChild(_spriteSubclassUnderTest); // Gives .stage ref
// UIImpersonator.addChild(_boardNavigator); // Doesn't give stage ref
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment