Tôi có một phương pháp sau đây, mà lấy đầu truy cập các trang từ Google Analytics:Làm thế nào để đơn vị cuộc gọi thử nghiệm để Google API
public function getData($limit = 10)
{
$ids = '12345';
$dateFrom = '2011-01-01';
$dateTo = date('Y-m-d');
// Google Analytics credentials
$mail = 'my_mail';
$pass = 'my_pass';
$clientLogin = Zend_Gdata_ClientLogin::getHttpClient($mail, $pass, "analytics");
$client = new Zend_Gdata($clientLogin);
$reportURL = 'https://www.google.com/analytics/feeds/data?';
$params = array(
'ids' => 'ga:' . $ids,
'dimensions' => 'ga:pagePath,ga:pageTitle',
'metrics' => 'ga:visitors',
'sort' => '-ga:visitors',
'start-date' => $dateFrom,
'end-date' => $dateTo,
'max-results' => $limit
);
$query = http_build_query($params, '');
$reportURL .= $query;
$results = $client->getFeed($reportURL);
$xml = $results->getXML();
Zend_Feed::lookupNamespace('default');
$feed = new Zend_Feed_Atom(null, $xml);
$top = array();
foreach ($feed as $entry) {
$page['visitors'] = (int) $entry->metric->getDOM()->getAttribute('value');
$page['url'] = $entry->dimension[0]->getDOM()->getAttribute('value');
$page['title'] = $entry->dimension[1]->getDOM()->getAttribute('value');
$top[] = $page;
}
return $top;
}
Nó cần một số refactoring cho chắc chắn, nhưng câu hỏi là:
- Bạn sẽ viết các bài kiểm tra PHPUnit cho phương pháp này như thế nào?
Bạn sẽ cần thử kết quả do google trả lại. Tôi nghĩ rằng một cách sẽ được đặt tất cả mọi thứ có liên quan đến việc nhận dữ liệu ($ kết quả) từ google đến một chức năng mới. Trong getData của bạn() nên chỉ có logic liên quan đến xử lý dữ liệu từ google. Trong phpUnit, bạn sẽ giả lập dữ liệu được trả về bởi google. – Marcin