gpt4 book ai didi

php - 使用登录的 Web 用户进行 Yii 单元测试

转载 作者:行者123 更新时间:2023-12-02 15:35:08 26 4
gpt4 key购买 nike

我正在编写一些单元测试,请耐心等待,我对单元测试仍然很陌生。

我遇到的问题是我的很多保存调用了一个需要
来自 Yii::app()->user->id 的用户 ID。

但是,当我运行 UnitTest 时,由于用户未登录,我遇到了问题。

我是否可以通过标志忽略行为(例如 if ($isInTestingMode))或让用户登录到测试类中?

最佳答案

我可能会构建一个您在测试中使用的用户对象。然后在适当的测试中(作为 setup 方法的一部分,就像 ernie 在他的评论中描述的那样),交换测试用户对象。

测试用户对象将有一个像这样工作的方法:

public function getId() {
return 12;
}

public function getIsGuest() {
return false;
}

以上就是他们所说的“假”对象。

在您的设置方法中,您将使用以下几行:

Yii::app()->configure(array(
'components' => array(
'user' => array(
'class' => 'path.to.FakeUser',
)
)
));

如果您希望它成为默认用户,您也可以将其添加到您的测试配置文件中(然后在需要非日志记录的测试中交换正常的 CWebUser/WebUser 模型在用户中。

或者您可以在每个单元测试中为您的 FakeUser (isLoggedIn = true/false) 设置一个标志。我自己可能会选择这个选项......

关于php - 使用登录的 Web 用户进行 Yii 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19054831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com