全局 Hook
如前所述,Hook 允许您简化测试流程并自动化您在测试前后可能执行的重复性任务。但是,如果多个测试文件中的 Hook 相同,您可能希望定义“全局”Hook 以避免代码重复。全局 Hook 在您的 Pest.php
配置文件中定义。
例如,如果您需要在 Feature
文件夹中的每个测试之前执行一些数据库操作,您可以在 Pest.php
配置文件中使用 beforeEach()
Hook。
1pest()->extend(TestCase::class)->beforeEach(function () {2 // Interact with your database...3})->group('integration')->in('Feature');
此外,您可以定义全局 Hook,无论文件夹或组如何,这些 Hook 都将在整个测试套件之前或之后运行。
1pest()->beforeEach(function () {2 // Interact with your database...3});
实际上,Hook 文档中提到的任何 Hook 也可以在您的 Pest.php
配置文件中使用。
1pest()->extend(TestCase::class)->beforeAll(function () {2 // Runs before each file...3})->beforeEach(function () {4 // Runs before each test...5})->afterEach(function () {6 // Runs after each test...7})->afterAll(function () {8 // Runs after each file...9})->group('integration')->in('Feature');
在 Pest.php
配置文件中定义的任何 before*
Hook 都会在单个测试文件中定义的 Hook 之前执行。类似地,在 Pest.php
配置文件中指定的任何 after*
Hook 都会在单个测试文件中定义的任何 Hook 之后执行。
在设置测试套件时,可能需要模拟某些功能或对象以隔离正在测试的代码并模拟某些条件或行为。这可以通过使用模拟库或框架(例如 Mockery)来完成:模拟