这与我的另一个问题有关:flex dictionary bug?
HashMap有一个方法getValues(),它返回一个值数组:
protected var map:Dictionary = null;
public function HashMap(useWeakReferences:Boolean = true)
{
map = new Dictionary( useWeakReferences );
}
public function getValues() : Array
{
var values:Array = [];
for (var key:* in map)
{
values.push( map[key] );
}
return values;
}
在我的单元测试课中,我有:
private var map:IMap;
[Before]
public function setUp():void
{
map = new HashMap();
map.put("a", "value A");
map.put("b", "value B");
map.put("c", "value C");
map.put("x", "value X");
map.put("y", "value Y");
map.put("z", "value Z");
}
[Test]
public function testGetValues():void
{
assertEquals(map.getValues(), /*what should I put here*/);
}
循环for (var key:* in map)
迭代字典map
的键,但似乎它的实现以某种随机的方式进行。编写测试的最佳方法是什么,因为我不知道getValues方法返回的数组将包含什么?
我以为我可以通过调用sort方法来做,并比较值,有更好的方法吗?
assertEquals(map.getValues().sort(), "value A,value B,value C,value X,value Y,value Z");
答案 0 :(得分:0)
是。如果我正确理解您的问题,您将尝试查看插入的值是否存在于您要返回的mapValues数组中。您可以在数组上使用indexOf函数并检查类似
的内容//start a loop to go through the arrays.
if( mapValues.indexOf("value A") >= 0 )
{
continue;
}
希望这有帮助!