Я не знаю, как проверить конструктор запросов на создание

Я пытаюсь протестировать весь метод репозитория, но я не знаю, как сделать тест, я хочу использовать Profecy. я использую DoctrineMongoDBBundle.

сущность

class UsuarioEntidade{
/**
* @MongoDB\Id
*/
protected $usuId;

/**
* @MongoDB\Field(type="string", name="usua_nome")
*/
protected $usuNome;

/**
* @MongoDB\Field(type="string", name="usua_telefone")
*/
protected $usuTelefone;

/**
* @MongoDB\Field(type="string", name="usua_email")
*/
protected $usuEmail;

/**
* @MongoDB\Field(type="string", name="usua_imagem_perfil")
*/
protected $usuImagemPerfil;

/**
* @MongoDB\Field(type="date")
*/
protected $createdAt;

##get and set

вместилище

class UsuarioRepositorio
{
protected $dm;

public function __construct(DocumentManager $documentManager)
{
$this->dm = $documentManager;
}
public function all(array $input = null)
{
$usuario = UsuarioEntidade::class;

$all = $this->dm->createQueryBuilder($usuario);

return $all->getQuery();
}

Это тест, который я не знаю, как выполнить на основе класса репозитория.

class UsuarioRepositorioTest extends TestCase
{

protected $repositorio;

protected $documento;

public function setUp()
{
$this->documento = $this->prophesize(DocumentManager::class);

$this->repositorio = new UsuarioRepositorio($this->documento->reveal());
}
public function testObtendoTodosOsDados()
{
$output = $this->usuario();
$this->documento->createQueryBuilder(UsuarioEntidade::class)->willReturn($output)->shouldBeCalled();

$all = $this->repositorio->all();

$this->assertEquals($output, $all);
}

protected function usuario()
{
$usuarioEntidade = new UsuarioEntidade();
$usuarioEntidade->setUsuNome('Humanos');
$usuarioEntidade->setUsuTelefone('89855236554');
$usuarioEntidade->setUsuEmail('[email protected]');
$usuarioEntidade->setUsuImagemPerfil('/application/sam/tests/Usuario/ImagemPerfil/sam.png');

$data = new \DateTime();
$usuarioEntidade->setCreatedAt($data->format('Y-m-d'));

return $usuarioEntidade;
}

Я не знаю, как издеваться над методом «getQuery ()».
Эта ошибка всегда происходит:
Ошибка: вызов функции-члена getQuery () для массива

1

Решение

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

Вы должны издеваться QueryBuilder объект и установить ожидание для его getQuery() функция для возврата желаемого результата. Макет QueryBuilder должен быть возвращен при настройке ожидания для DocumentManager createQueryBuilder() функция.

Что-то вроде этого:

public function testObtendoTodosOsDados()
{
$output = $this->usuario();

$mockQueryBuilder = $this->prophesize(QueryBuilder::class); // Remember to import the proper QueryBuilder namespace

$mockQueryBuilder->getQuery()->willReturn($output)->shouldBeCalled();

$this->documento->createQueryBuilder(UsuarioEntidade::class)->willReturn($mockQueryBuilder)->shouldBeCalled();

$all = $this->repositorio->all();

$this->assertEquals($output, $all);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]