包含单元测试时的问题
Include problems when unit testing
当我进行单元测试时 类 我需要更改包含路径,但网站本身将无法运行。因此,每次我测试时,我都需要更改文件中的几乎所有包含路径,并在测试后再次将它们更改回来。这显然是不切实际的。
我大概明白为什么会这样;因为测试文件不在根目录下。
问题:如何在不更改包含路径的情况下将单元测试文件保存在与被测试文件相同的文件夹中?
我尝试定义一个 PATH 常量。这也不起作用,因为定义常量的文件每次包含它时都会重新定义它,使其无用。
require_once 'database/CrudTest.php';
require_once 'UserModel.php';
require_once 'database/UserCrud.php';
use PHPUnit\Framework\TestCase;
class UserModelTest extends TestCase{
....
为了测试 类 我必须在测试所需的每个文件中的每个包含之前放置“../”。然后在测试后删除它们。
不要依赖这些要求的包含路径或相对路径。您可以使用 __DIR__
获取测试文件所在目录的绝对路径,然后将路径的其余部分设置为相对于该目录的所需文件。
require_once __DIR__ . '/database/CrudTest.php';
我不能 100% 确定这条路径是正确的,因为我不确定我是否正确理解了这些文件相对于测试文件的位置。您可能需要使用
require_once __DIR__ . '/../database/CrudTest.php';
但无论如何,总体思路是一样的。这样,无论调用脚本或当前工作目录的相对位置如何,路径都是正确的。
当我进行单元测试时 类 我需要更改包含路径,但网站本身将无法运行。因此,每次我测试时,我都需要更改文件中的几乎所有包含路径,并在测试后再次将它们更改回来。这显然是不切实际的。
我大概明白为什么会这样;因为测试文件不在根目录下。
问题:如何在不更改包含路径的情况下将单元测试文件保存在与被测试文件相同的文件夹中?
我尝试定义一个 PATH 常量。这也不起作用,因为定义常量的文件每次包含它时都会重新定义它,使其无用。
require_once 'database/CrudTest.php';
require_once 'UserModel.php';
require_once 'database/UserCrud.php';
use PHPUnit\Framework\TestCase;
class UserModelTest extends TestCase{
....
为了测试 类 我必须在测试所需的每个文件中的每个包含之前放置“../”。然后在测试后删除它们。
不要依赖这些要求的包含路径或相对路径。您可以使用 __DIR__
获取测试文件所在目录的绝对路径,然后将路径的其余部分设置为相对于该目录的所需文件。
require_once __DIR__ . '/database/CrudTest.php';
我不能 100% 确定这条路径是正确的,因为我不确定我是否正确理解了这些文件相对于测试文件的位置。您可能需要使用
require_once __DIR__ . '/../database/CrudTest.php';
但无论如何,总体思路是一样的。这样,无论调用脚本或当前工作目录的相对位置如何,路径都是正确的。