Как использовать методы PHPUnit assert в функциональном тесте Codeception?

Я использую Codeception для модульных, функциональных и приемочных тестов моего приложения Laravel 4 PHP.

Мои модульные тесты выглядят следующим образом:

use Codeception\Util\Stub;
class ExampleTest extends \Codeception\TestCase\Test 
{
 public function testExample()
 {
  $example = true;
  $this->assertSame($example, true);
 }
}

Мои функциональные тесты выглядят следующим образом:

use \TestGuy;
class ExampleCest
{
 public function example(TestGuy $I)
 { 
  $I->amOnPage('/auth/login');
  $I->see('Sign in');
 }
}

Но я также хочу использовать методы утверждения PHPUnit в своих функциональных тестах. Но когда я пытаюсь, я получаю эту ошибку:

Вызов метода undefined ExampleCest:: assertSame()

Как использовать методы утверждения PHP в функциональном тесте Codeception?

Ответы

Ответ 1

\PHPUnit_Framework_Assert::assertSame()

Ответ 2

Так как Codeception 2.1 (не 2.0) вы можете использовать его, как и другие, с помощью:

$I->assertSame($expected, $actual, $message);

Но не забудьте включить модуль Asserts в вашем config - например:

class_name: UnitTester
modules:
    enabled: [ Asserts ]

Обратите внимание: Возможно, вам потребуется изменить конфигурацию при обновлении до версии 2.1 - см. инструкции по обновлению: http://codeception.com/06-19-2015/codeception-2.1-rc.html

Ответ 3

Другим обходным решением может быть использование методов-помощников в наборе тестов.

Например, для метода assertSame()

class ExpectedHelper extends \Codeception\Module
{
    protected $test;

    function _before(\Codeception\TestCase $test) {
        $this->test = $test;
    }

    function assertSame($expected, $actual, $message = '')
    {
        $this->test->assertSame($exception, $actual, $message);
    }
}

где ExpectedHelper - имя помощника тестового набора (например: UnitHelper, FunctionalHelper), который должен находиться под _support папка

и вы можете использовать его в своем тесте как $I->assertSame('12340','12340');