当我写这段代码时,我没有使用phpunit和功能测试,因为我不知道如何为这段代码编写测试。我知道如何编写其他函数和代码的测试,但我不知道这个代码需要哪个测试。谁能解释一下? 所有功能都是谷歌adwords API。不是我自己的。我也不需要测试它们。
$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;
}
答案 0 :(得分:3)
由于代码的存在,很难定义测试,因为它不是我们可以调用的形式;我们不能改变输入并确保我们获得某些输出。
所以我可以看到你可以测试的是 graph 是否最终填充了预期的数据。不知何故,您调用此代码并查看图中的内容。
现在看一下代码中的几个问题:
所以我会修改这段代码来概括它,并把它放在一个函数中。然后我们可以测试这个功能。想象一个函数(伪代码)
graph = getGraph(start, end, version)
现在你可以改变输入并检查响应,但是......你怎么知道响应应该是什么?您可以尽力模拟您使用的服务。然后,您还可以断言您使用正确的参数调用服务,并且对于某些测试强制服务引发错误条件。
总结:编写可测试的代码确实有助于你想要测试的东西,这样你往往会专注于沉闷但重要的东西,比如错误处理。