Я использую 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); }
Однако, трассировка Array
или ArrayCollection
, содержащая те же данные, будет работать нормально.
То, что я хочу сделать, - это (без необходимости разбивать мой существующий IList
интерфейс) возможность обрабатывать IList
как Array
или ArrayCollection
для целей тестирования, потому что это Что делает Hamcrest:
override public function matches(collection:Object):Boolean
{
for each (var item:Object in collection)
{
if (_elementMatcher.matches(item))
{
return true;
}
}
return false;
}
Это просто обречено на провал? В качестве примечания: , почему интерфейс IList не может быть повторен таким образом? Это просто кажется неправильным.