gpt4 book ai didi

unit-testing - 使用 PHPUnit 对具有多种用户类型的网站进行单元测试的最佳方法

转载 作者:行者123 更新时间:2023-12-01 13:09:42 26 4
gpt4 key购买 nike

我开始学习如何使用 PHPUnit 来测试我正在处理的网站。我遇到的问题是我定义了五种不同的用户类型,我需要能够测试具有不同类型的每个类。我目前有一个用户类,我想将它传递给每个函数,但我不知道如何传递它或测试可能返回正确与否的不同错误。

编辑:我应该说。我有一个用户类,我想将此类的不同实例传递给每个单元测试。

最佳答案

如果您的各种用户类继承自父用户类,那么我建议您对测试用例类使用相同的继承结构。

考虑以下示例类:

class User
{
public function commonFunctionality()
{
return 'Something';
}

public function modifiedFunctionality()
{
return 'One Thing';
}
}

class SpecialUser extends User
{
public function specialFunctionality()
{
return 'Nothing';
}

public function modifiedFunctionality()
{
return 'Another Thing';
}
}

您可以对测试用例类执行以下操作:

class Test_User extends PHPUnit_Framework_TestCase
{
public function create()
{
return new User();
}

public function testCommonFunctionality()
{
$user = $this->create();
$this->assertEquals('Something', $user->commonFunctionality);
}

public function testModifiedFunctionality()
{
$user = $this->create();
$this->assertEquals('One Thing', $user->commonFunctionality);
}
}

class Test_SpecialUser extends Test_User
{
public function create() {
return new SpecialUser();
}

public function testSpecialFunctionality()
{
$user = $this->create();
$this->assertEquals('Nothing', $user->commonFunctionality);
}

public function testModifiedFunctionality()
{
$user = $this->create();
$this->assertEquals('Another Thing', $user->commonFunctionality);
}
}

因为每个测试都依赖于一个可以覆盖的创建方法,并且因为测试方法是从父测试类继承的,所以父类的所有测试都将针对子类运行,除非您覆盖它们以更改预期的行为。

在我有限的经验中,这非常有效。

关于unit-testing - 使用 PHPUnit 对具有多种用户类型的网站进行单元测试的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58969/

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