我正在使用 Flex 3.3,作为单元测试的一部分,hamcrest-as3 用于测试列表中的项目成员资格:
var myList: IList = new ArrayCollection(['a', 'b', 'c']).list;
assertThat(myList, hasItems('a', 'b', 'c'));
问题是IList
该类显然不支持for each
迭代。例如,对于上面的列表,这不会跟踪任何内容:
for each (var i: * in myList) { trace (i); }
但是,跟踪包含相同数据的 anArray
或 an可以正常工作。ArrayCollection
我想要做的是(不必拆开我现有IList
的基于 - 的界面)能够处理IList
类似 anArray
或 anArrayCollection
以进行测试,因为这就是 hamcrest 所做的:
override public function matches(collection:Object):Boolean
{
for each (var item:Object in collection)
{
if (_elementMatcher.matches(item))
{
return true;
}
}
return false;
}
这是否注定要失败?作为旁注,为什么IList 接口不能以这种方式迭代?这似乎是错误的。