如何在Codeception功能测试中使用PHPUnit断言方法?

时间:2014-01-29 12:20:58

标签: phpunit 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断言方法。但是当我尝试时,我得到了这个错误:

调用未定义的方法ExampleCest :: assertSame()

如何在Codeception功能测试中使用PHP断言方法?

4 个答案:

答案 0 :(得分:24)

由于 Codeception 2.1 (不是2.0),您可以像使用其他断言一样使用它:

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

但请勿忘记在配置中启用Asserts模块 - 例如:

class_name: UnitTester
modules:
    enabled: [ Asserts ]

请注意:升级到2.1时可能需要更改配置 - 请参阅升级说明:http://codeception.com/06-19-2015/codeception-2.1-rc.html

答案 1 :(得分:13)

\PHPUnit_Framework_Assert::assertSame()

答案 2 :(得分:2)

在Codeception 4中,只需添加断言模块:

modules:
    enabled:
        - \Codeception\Module\Asserts

到suite.yml配置文件并运行codeception build

答案 3 :(得分:1)

另一种解决方法是在测试套件中使用Helper方法。

例如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');