Я пишу автоматизированные тестовые случаи, используя Javascript для выполнения действий с графическим интерфейсом. Я пишу функцию для обработки некоторых основных операций «инициализации» в тестируемом программном обеспечении, но я хотел, чтобы у меня была возможность не обязательно вводить каждый аргумент в параметры.
Итак, у меня была функция, которая в основном делала это:
function initializeApp(arg1,arg2,arg3,arg4)
{
action1(arg1);
action2(arg2);
action3(arg3);
action4(arg4);
}
Но допустим, что я не хотел выполнять действие 4, сейчас код, содержащийся в блоке "action4", не сможет обработать не входные данные для arg4 и будет аварийно завершать работу. Таким образом, я решил обойти эту проблему, создав несколько if
и else if
операторов, которые по существу пропускали бы различные блоки кода, если этот аргумент не был определен. Вот пример:
function testIES(configFile, recordFile, overwrite, scriptFile)
{
if (arg1 == undefined)
{
action2(arg2);
action3(arg3);
action4(arg4);
} else if (arg2 == undefined)
{
action1(arg1);
action3(arg3);
action4(arg4);
} else if (arg3 == undefined)
{
action1(arg1);
action2(arg2);
action4(arg4);
} else if (arg4 == undefined)
{
action1(arg1);
action2(arg2);
action3(arg3);
}
}
Однако этот подход имеет очевидный недостаток в том, что мне нужно было бы придумывать каждую комбинацию «действий», если бы я хотел опустить более 1 аргумента. Также было бы не очень удобно для пользователя, если бы кто-то еще хотел сделать это, потому что он должен знать, чтобы не пропустить более одного аргумента. Так что мой лучший вариант - просто придумать все разные комбинации? Или есть лучший способ? Конечно, есть лучший способ.