【问题标题】:Yii2 & Codeception - Enabling tester module in unit testingYii2 & Codeception - 在单元测试中启用测试模块
【发布时间】:2014-08-18 17:57:27
【问题描述】:

我使用 Yii2 和内置的 codeception 并想编写单元测试。在 codeception 的文档中,我发现了这个示例测试:

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() 之类的方法中受益?

【问题讨论】:

    标签: unit-testing yii2 codeception


    【解决方案1】:

    试试这个:

    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 配置。

    【讨论】:

      【解决方案2】:
      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 并开始使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-26
        • 1970-01-01
        • 2015-03-18
        • 1970-01-01
        • 1970-01-01
        • 2015-08-14
        • 2015-07-16
        • 2015-01-16
        相关资源
        最近更新 更多