我使用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()
等方法中受益?
答案 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并开始使用它。