Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Teste de exception capturada

Bom dia,

Estou fazendo uma validação no início de um método apenas para verificar se uma configuração está habilitada, caso esteja desabilitada eu lanço uma exceção e capturo essa exceção pelo tipo para eu trata-la.

protected function init(): void
{
    if (!$this->settings->isModuleEnable()) {
            throw new AuthorizationException(__('The multiple wishlist module is disabled.'));
    }
}

...

public function execute(): ResultInterface
 {
    try {
        $this->init();
        ...
    } catch (AuthorizationException $exception) {
        ...
    }
    ...
}

No código para testar esperar essa exception está falhando.

public function testExecuteException(): void
{
    $this->expectException(AuthorizationException::class);

     $this->settingsMock->method('isModuleEnable')->willReturn(false);

     $this->createControllerMock->execute();
}

Quando eu tiro o método expectException() os testes passam sem dar erro, sabem me dizer se quando a exception é capturada, não é necessário colocar o método expectException()?

1) Compass\MultipleWishlist\Test\Unit\Controller\Page\CreateTest::testExecuteException
Failed asserting that exception of type "Magento\Framework\Exception\AuthorizationException" is thrown.
1 resposta
solução!

Descobri que o método expectException() serve apenas para quando o código termina com uma Exception e não quando é tratado uma Exception em um catch()