No necesita probar que Google funciona y responde (incluso si no lo hace, no puede arreglarlo), tampoco necesita probar Zend_OpenId (ya está cubierto). Necesita probar solo su propio código. Por lo tanto, podría ser una buena idea resguardar las respuestas de OpenId. No sé cómo se ve su código, digamos que tienes un ejemplo de guía de referencia Zend la utilización de su clase Mygoogle_OpenId_Consumer
if (isset($_POST['openid_action']) &&
$_POST['openid_action'] == "login" &&
!empty($_POST['openid_identifier'])) {
$consumer = new Mygoogle_OpenId_Consumer();
if (!$consumer->login($_POST['openid_identifier'])) {
$status = "OpenID login failed.";
}
} else if (isset($_GET['openid_mode'])) {
if ($_GET['openid_mode'] == "id_res") {
$consumer = new Mygoogle_OpenId_Consumer();
if ($consumer->verify($_GET, $id)) {
$status = "VALID " . htmlspecialchars($id);
} else {
$status = "INVALID " . htmlspecialchars($id);
}
} else if ($_GET['openid_mode'] == "cancel") {
$status = "CANCELLED";
}
}
Aquí no desea realizar llamadas reales a Google, así como las pruebas de lo que Zend_OpenId_Consumer necesitaría colgar Zend_OpenId_Consumer. Para poder insertarlo en su clase, usaríamos un adaptador que sea Zend_OpenId_Consumer o su objeto simulado.
class Mygoogle_OpenId_Consumer extends Zend_OpenId_Consumer
{
private static $_adapter = null;
public static function setAdapter($adapter)
{
self::$_adapter = $adapter;
}
public static function getAdapter()
{
if (empty(self::$_adapter)) {
self::$_adapter = new Zend_OpenId_Consumer();
}
return self::$_adapter;
}
.....
Y, finalmente, en las pruebas que necesita para crear un objeto de burla y utilizarla para stubbing
private function _stubGoogle($successful = false)
{
$adapter = $this->getMock('Mygoogle_OpenId_Consumer', array('login','verify'));
$httpResponse = $successful?:null;
$adapter->expects($this->any())
->method('login')
->will($this->returnValue($httpResponse));
$adapter->expects($this->any())
->method('verify')
->will($this->returnValue($successful));
Mygoogle_OpenId_Consumer::setAdapter($adapter);
}
public function testUserLogsSuccessfullyUsingGoogle()
{
$this->_stubGoogle(true);
//do whatever you need to test your login action:
//set and send request, dispatch your action
}
public function testUserLogsUnSuccessfullyUsingGoogle()
{
$this->_stubGoogle(false);
...
}
no tengo una respuesta completa para usted pero puede que desee echar un vistazo a la pruebas unitarias para el componente Zend_OpenID dentro de ZF. Puede darte algunas ideas. –