如何在 Codeception 功能测试中使用 PHPUnit 断言方法?
Posted
技术标签:
【中文标题】如何在 Codeception 功能测试中使用 PHPUnit 断言方法?【英文标题】:How to use PHPUnit assert methods in a Codeception functional test? 【发布时间】:2014-02-21 06:00:47 【问题描述】:我正在使用 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 断言方法?
【问题讨论】:
【参考方案1】:在 Codeception 4 中只需添加断言模块:
modules:
enabled:
- \Codeception\Module\Asserts
到您的 suite.yml 配置文件并运行 codeception build
【讨论】:
别忘了“composer require --dev codeception/module-asserts”【参考方案2】:由于 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
【讨论】:
对于“如何在功能测试中使用 Assert 方法”的问题,这是这里的最佳答案。 为了在 IDE 中查看其他方法,您必须在配置更改后运行一次测试套件。来自 codeception 文档:“默认情况下,Codeception 会在套件配置的每次更改时自动重建 Actions 特征。”【参考方案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 是测试套件 Helper 名称(例如:UnitHelper、FunctionalHelper),应位于_support文件夹
你可以在你的测试中使用它$I->assertSame('12340','12340');
【讨论】:
【参考方案4】:\PHPUnit_Framework_Assert::assertSame()
【讨论】:
以上是关于如何在 Codeception 功能测试中使用 PHPUnit 断言方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Codeception 命令行的验收测试中使用动态 url
如何在 Codeception 中使用 Stub::update?
如何使用 selenium 和 codeception 检测验收测试中的 dom 变化