【发布时间】:2018-08-28 12:10:01
【问题描述】:
我正在将一个系统的 phpunit 从 5.1 更新到 6.5,但是从更新开始,所有成功运行的测试开始失败。
错误是:
1) 测试\Administracao\Controller\AlunoControllerTest::testModuloController TypeError:传递给 SebastianBergmann\GlobalState\Snapshot::__construct() 的参数 3 必须是 boolean 类型,给定 null,在第 2177 行的 /usr/share/php/PHPUnit/Framework/TestCase.php 中调用
我查找了迁移文档,但没有找到。经历过这一切的人可以帮助我吗?或者您知道进行迁移的任何文件吗?
有问题的测试代码文件是:
<?php
namespace Tests\Administracao\Controller;
use Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase;
use PHPUnit\Framework\TestCase;
use Domain\Model\Instituicao\Instituicao;
use Domain\Model\Usuario\Administrador;
use Domain\Model\Usuario\Email;
use Domain\Model\Usuario\Senha;
/**
* Classe com métodos comuns para todos os controllers da api
*/
abstract class AbstractControllerTest extends TestCase
{
private $instituicao;
public function setUp()
{
$this->setApplicationConfig(include './config/application.config.php');
parent::setUp();
$serviceManager = $this->getApplicationServiceLocator();
$this->instituicao = $serviceManager->get('InstituicaoRepository')->getByUrl('uov');
}
public function auth()
{
// simula o repositório para não fazer modificações no banco
$session = $this->getMock('Session', array('offsetGet', 'offsetUnset'));
$usuario = $this->novoUsuario();
$session->expects($this->any())
->method('offsetGet')
->willReturn($usuario);
$serviceManager = $this->getApplicationServiceLocator();
$serviceManager->setAllowOverride(true);
$serviceManager->setService('Session', $session);
}
/**
* Cria um novo usuário
*/
private function novoUsuario()
{
$email = new Email('teste@email.com');
$senha = new Senha('123456');
$usuario = new Administrador('Teste', $email, $senha, $this->instituicao);
return $usuario;
}
}
还有:
<?php
namespace Tests\Administracao\Controller;
use Doctrine\ORM\Tools\Pagination\Paginator;
/**
* Testa os métodos do controller do Aluno
*/
class AlunoControllerTest extends AbstractControllerTest
{
public function testModuloController()
{
$this->dispatch('/uov/alunos');
$this->assertModuleName('Administracao');
$this->assertControllerName('Administracao\Controller\AlunoController');
$this->assertControllerClass('AlunoController');
$this->assertMatchedRouteName('instituicao/alunos');
}
}
【问题讨论】: