Лучший способ написать модульные тесты для словаря - PullRequest
0 голосов
/ 20 января 2012

Это как-то связано с моим другим вопросом: ошибка словаря flex?

В 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? Я думал, что смогу сделать это, вызвав метод сортировки и сравнив значения, есть ли лучший способ сделать это?

assertEquals(map.getValues().sort(), "value A,value B,value C,value X,value Y,value Z");

1 Ответ

0 голосов
/ 20 января 2012

Да. Если я правильно понимаю вашу проблему, вы пытаетесь увидеть, есть ли вставленные значения в массиве mapValues, который вы возвращаете. Вы можете использовать функцию indexOf в массиве и проверить что-то вроде

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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...