1

大家好!
我们曾经用 FlexUnit 编写单元测试,而我们只是在测试我们的模型。现在我们也想测试视图。在我运行我的测试之前,我创建了一个我的视图和我的模型的实例来测试这些东西。当我尝试访问视图时,我得到一个空指针异常。如果我将视图添加到显示列表,它会以某种方式工作 - 即使我在添加后立即将其从列表中删除。

它看起来像这样:

var myView: MyView = new myView();
//myView.initialize(); will throw error
Application.application.addChild(view);
Application.application.removeChild(view);
myView.initialize(); // will work


希望你能给我一个提示。

模拟人生

4

3 回答 3

3

Flex UIComponent 在添加到容器之前不会遍历组件生命周期。因此,如果您从未将变量添加到容器中,则可能不会初始化变量并且可能不会创建子项。

有关Flex 组件生命周期的更多信息。您会注意到将组件添加到容器后有 11 个步骤。

我怀疑添加它然后删除它可能会导致其他问题,但这取决于您要测试的内容。

要知道您的确切错误,我们必须查看视图的初始化方法中的代码。它很可能会访问尚未创建的孩子。

MXML 组件通常会掩盖生命周期步骤,但组件仍会经历这些步骤。

我希望这有帮助; 但是由于您没有提出问题,因此我不确定这是否是您所追求的信息。

于 2011-05-23T12:10:10.043 回答
1

除了 (www.Flextras.com) 所写的(我也即将发布)之外,您可能会考虑采用不同的方法来测试您的观点。

首先,考虑一种分离模式,如 Presentation Model、MVP 或 MVC。它们允许您将视图与视图行为分开,并与视图分开测试行为。像这样的方法,如果正确完成,将带您走很长一段路,因为您在视图中最小化或消除了 AS3 代码。

如果您真的想测试您的观点,我建议您为此使用功能测试工具。单元测试框架非常适合单独测试类。一旦您开始谈论具有复杂生命周期的视图,功能测试框架就开始变得有意义。

将 FlexMonkey视为Flex 的功能 UI 测试框架的示例。

于 2011-05-23T12:16:37.103 回答
0

我建议您使用此处此处描述的用户界面外观。此功能专为 UI 组件测试而设计。

于 2011-05-23T12:22:18.280 回答