Yii2& Codeception - 在单元测试中启用测试器模块

时间:2014-08-18 17:57:27

标签: unit-testing yii2 codeception

我使用Yii2和内置代码,并希望编写单元测试。在代码的文档中我发现了这个例子test:

function testUserCanBeActivatedWithValidKey()
{
    // lookup for user with Eloquent API
    $user = User::find($this->user_id);
    // executing action
    $isActivated = $user->activate('123456'));
    // performing assertion
    $this->assertTrue($isActivated);
    // checking that data was actually saved into database
    $this->tester->seeRecord('users', [
        'id' => $this->user_id,
        'is_active' => 1
     ]);
}

但是当我自己尝试编写测试时,没有$this->tester对象。我如何从seeInDatabase()等方法中受益?

2 个答案:

答案 0 :(得分:0)

试试这个:

function testUserCanBeActivatedWithValidKey(WebGuy $I)
{
    // lookup for user with Eloquent API
    $user = User::find($this->user_id);
    // executing action
    $isActivated = $user->activate('123456'));
    // performing assertion
    $this->assertTrue($isActivated);
    // checking that data was actually saved into database
    $I->seeRecord('users', [
        'id' => $this->user_id,
        'is_active' => 1
     ]);
}

您将测试对象作为测试函数的参数。如果它是TestGuy,WebGuy或其他东西,你必须查看你的codeception.yml配置。

答案 1 :(得分:0)

class UserTest extends \yii\codeception\TestCase
{
   /**
    * @var \CodeGuy
    */
    protected $tester;

function testUserCanBeActivatedWithValidKey()
{
    // lookup for user with Eloquent API
    $user = User::find($this->user_id);
    // executing action
    $isActivated = $user->activate('123456'));
    // performing assertion
    $this->assertTrue($isActivated);
    // checking that data was actually saved into database
    $this->tester->seeRecord('users', [
        'id' => $this->user_id,
        'is_active' => 1
     ]);
}

覆盖$ tester并开始使用它。