public static function findIdentity($id)
{
// always return the same dummy user
return new static ([
'id' => 'dummyUser',
'email' => 'dummyUser@domain',
'name' => 'Dummy User'
]);
}
public static function findGuestIdentity()
{
return new static ([
'id' => 'guest',
'email' => '',
'name' => 'Guest User'
]);
}
public static function findGast()
{
return new static ([
'id' => 'guest'
]);
}
/**
* This method is needed to satisfy the interface.
* {@inheritdoc}
*/
public static function findIdentityByAccessToken($token, $type = null)
{
return true;
}
/**
* This method is needed to satisfy the interface.
*
* {@inheritdoc}
*/
public function getId()
{
return true;
}
/**
* This method is needed to satisfy the interface.
* {@inheritdoc}
*/
public function getAuthKey()
{
return "bar";
}
/**
* This method is needed to satisfy the interface.
* {@inheritdoc}
*/
public function validateAuthKey($authKey)
{
return true;
}
1条答案
按热度按时间uplii1fm1#
单元测试的思想是测试代码的一个单独的特定部分,比如函数或方法。如果你测试一个函数或方法,它有依赖关系,比如获取一个用户id或一条数据库记录,单元测试的目的是模拟或存根你方法的每一个依赖关系。
另一种方法是在测试中重新构建/重新创建引导应用程序,这意味着:调用正确的方法来创建用户对象,例如通过调用登录方法。
如果你想测试你的应用程序的整个部分,那么功能测试可能是适合你的测试类型。这里你从一个完整的引导应用程序开始,在那里你可以首先登录用户(调用用户页面),然后执行你的测试用例。
但是:
如果您在测试中只需要任何登录,则还可以为测试定义一个虚拟用户类。这意味着:
1.在
config/test.php
中添加类似于使用虚拟用户模型的内容:'用户' =〉[ '身份类' =〉'应用程序\测试\模型\虚拟用户','登录网址' =〉['站点/登录'],'启用自动登录' =〉真,'启用会话' =〉真,],
1.在
app\tests\models\DummyUser
中创建一个虚拟用户模型,该模型实现IdentityIngterface
所需的所有方法,如下所示:命名空间应用\测试\模型;
使用yii\web\身份界面;使用应用程序\模型\用户;
类DummyUser扩展用户实现标识接口{ public $id =“Foo”;
}
1.在单元测试中,使用
Yii
和虚拟用户模型use app\test\models\DummyUser
,并在测试类的块之前运行一个假登录:受保护的函数_before(){ $dummyLogin =虚拟用户::查找身份('dummyUser');Yii::$app-〉用户-〉登录($dummyLogin);}
现在,Yii 2用户身份在Yii 2 codecrement单元测试中可用。现在您在Yii 2中有了一个(假的)单元测试登录。