0
votes

Trying to install CodeCeption with Laravel framework 5.6

I am getting this error.

Steps i followed to install are 1. composer require codeception/codeception --dev 2. php ./vendor/bin/codecept bootstrap

The error i am getting is

Fatal error: Declaration of Codeception\Test\Unit::getDependencies() must be compatible with PHPUnit\Framework\TestCase::getDependencies(): array in /vendor/codeception/codeception/src/Codeception/Test/Unit.php on line 14

Can someone tell how to fix this or downgrade and get it work with Laravel 5.6?

2

2 Answers

3
votes

This was just fixed in codeception/codeception version 2.4.5, so run composer update, and the error should no longer be happening.


From the changelog (emphasis mine):

2.4.5
  • Fixed PHPUnit 7.2 compatibility.
  • Introduced RunBefore extension to execute scripts before running tests. See #5049 by @aashmelev.
  • [Db] Added two options for MySQL by @bangertz
    • ssl_cipher - list of one or more permissible ciphers to use for SSL encryption
    • ssl_verify_server_cert - disables certificate CN verification
  • [Db] Always disconnect before connect when reconnect is set. By @ashnazg
  • [Db] More explicit PDO closing upon destruction and close opened transactions by @ashnazg.
  • [Recorder Extension] Improved error logging by @OneEyedSpaceFish. See #5101
  • [Lumen] Fixed file uploads via REST module. By @retnek.
  • Fixed: function getMetadata() may not exist, results in fatal error. See #4913 by @marcovtwout
2
votes

In Codeception/Test/Unit.php line no 133, change the getDependencies function to have a array return type. : array

After the change the getDependencies function should look like this.

public function getDependencies(): array
{
    $names = [];
    foreach ($this->getMetadata()->getDependencies() as $required) {
        if ((strpos($required, ':') === false) and method_exists($this, $required)) {
            $required = get_class($this) . ":$required";
        }
        $names[] = $required;
    }
    return $names;
}