Actionscript 3 为字典编写单元测试的最佳方法

Actionscript 3 为字典编写单元测试的最佳方法,actionscript-3,unit-testing,dictionary,hashmap,Actionscript 3,Unit Testing,Dictionary,Hashmap,这与我的另一个问题有关: HashMap有一个方法getValues(),它返回一个值数组: protected var map:Dictionary = null; public function HashMap(useWeakReferences:Boolean = true) { map = new Dictionary( useWeakReferences ); } public function getValues() : Array { var values:Arr

这与我的另一个问题有关:

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");

对。如果我正确理解了您的问题,您将尝试查看插入的值是否存在于返回的mapValues数组中。您可以在数组上使用indexOf函数并检查如下内容

//start a loop to go through the arrays.
if( mapValues.indexOf("value A") >= 0 )
{
    continue;
}

希望这有帮助

哈希映射不保证元素的顺序,因此对键或值进行排序是一种常见的做法。