0

我有一堆 NumericSteppers(开始周、开始年、结束周、结束年),它们深入 ViewStacks、NavigatorContents 等。我想对我的日期步进器进行单元测试,并且想知道我该怎么做?当我初始化顶级父组件时,不会创建子组件。我是否必须通过向下迭代树来手动添加所有这些组件(请说不:))?我可以使用 UIImpersonator 吗?

对不起,如果问题是基本的,Flex 对我来说很新。

4

1 回答 1

1

在 Flash 中,为 GUI 组件创建单元测试是有问题的。我通常为控制器、表示模型、中介(等)编写单元测试——即:包含业务逻辑的非 GUI 类。

为 GUI 对象编写测试成为一个失败的提议,原因有很多:

  • 视图的逻辑往往需要由用户交互触发
  • 视图可能取决于在测试中难以模拟/模拟的低级 Flash API(NetStream、Camera 等))
  • 自动运行测试(即:由您的持续集成或构建系统启动)时,无法运行具有 GUI 元素(使用阶段或添加到阶段的东西)的测试
  • 测试往往运行速度较慢

我通常避免为诸如日期步进器之类的组件编写单元测试,我们将它们组合在一起以形成更大的“视图”。我通常使用表示模型,如果组件具有应测试的特定业务逻辑,则为非 gui 表示模型类(或控制器、中介或其他)编写测试。

public class MyViewPM
{
   // write a unit test for this method
   public function onSubmitButtonClick():void
   {
   }
}

public class MyView extends Sprite
{
    // this is injected by your MVC framework
    // or set when the the view is created, or added to stage, etc.
    public var pm:MyViewPM;

    public function MyView()
    {
        submitButton.addEventListener(MouseEvent.Click, onMouseClick);
    }

    private function onMouseClick(event:Event):void
    {
        pm.onSubmitButtonClick();
    }
}
于 2012-08-03T00:39:29.430 回答