У меня есть простой код.как я могу написать тесты для этого? - PullRequest
0 голосов
/ 14 ноября 2010

Когда я написал этот код, я не использовал phpunit и функциональные тесты, потому что я не знаю, как писать тесты для этого кода.Я знаю, как писать тесты для других функций и кода, но я не знаю, какой тест требуется для этого кода.Кто-нибудь может объяснить?Все функции Google API AdWords.Не мой собственный.Мне также не нужно проверять их.

    $adStatsSelector = new AdStatsSelector();
$adStatsSelector->dateRange = new
      DateRange('20100901','20101001');
$user = new AdWordsUser();
$user->LogDefaults();
$servicedAccountService = $user->GetServicedAccountService('v201008');
$selector = new ServicedAccountSelector(); 
$graph = $servicedAccountService->get($selector); 
foreach($graph->accounts as &$account) {
    $user->SetClientId($account->login);
    $campaignService = $user->GetCampaignService('v201008');
    $selector = new CampaignSelector(null,null,$adStatsSelector);
    $page = $campaignService->get($selector);
    $account->campaigns = $page->entries;
}

1 Ответ

3 голосов
/ 14 ноября 2010

Поскольку код стоит, трудно определить тесты, потому что он не в форме того, что мы можем назвать;мы не можем изменять входные данные и быть уверенными в том, что получим определенные выходные данные.

Итак, насколько я могу убедиться, вы можете проверить, что в итоге график заполняется ожидаемыми данными.Каким-то образом вы вызываете этот код и смотрите, что на графике.

Теперь, глядя на код, на ум приходит несколько вопросов:

  1. Почему диапазон дат жестко закодирован?*
  2. Что это за v201008, почему это жестко запрограммировано?
  3. Где обработка ошибок?Могут ли эти $ user -> ???методы терпят неудачу?

Поэтому я бы изменил этот код, чтобы обобщить его, и поместил бы его в функцию.Затем мы можем проверить функцию.Представьте себе функцию (в псевдокоде)

 graph = getGraph(start, end, version)

, теперь вы можете изменять входы и проверять ответ, но ... откуда вы знаете, каким должен быть ответ?Вы можете сделать все возможное, чтобы издеваться над услугами, которые вы используете.Затем вы можете также утверждать, что вы вызываете сервисы с правильными параметрами, и для некоторых тестов вынуждаете сервисы вызывать условия ошибки.при этом вы, как правило, сосредотачиваетесь на скучных, но важных вещах, таких как обработка ошибок.

...