跳过测试

在开发过程中,您可能需要暂时禁用某个测试。我们建议使用 skip() 方法,而不是注释掉代码。

1it('has home', function () {
2 //
3})->skip();

运行测试时,Pest 会告知您哪些测试被跳过了。

您还可以提供跳过测试的原因,Pest 会在运行测试时显示该原因。

1it('has home', function () {
2 //
3})->skip('temporarily unavailable');

此外,您可能需要根据特定条件跳过测试。在这种情况下,您可以将布尔值作为 skip() 方法的第一个参数。只有当布尔值计算结果为 true 时,才会跳过此测试。

1it('has home', function () {
2 //
3})->skip($condition == true, 'temporarily unavailable');

您可以将闭包作为 skip() 方法的第一个参数,以便在测试用例的 beforeEach() 钩子执行后推迟条件的计算。

1it('has home', function () {
2 //
3})->skip(fn () => DB::getDriverName() !== 'mysql', 'db driver not supported');

要在特定操作系统上跳过测试,您可以使用 skipOnWindows()skipOnMac()skipOnLinux()

1it('has home', function () {
2 //
3})->skipOnWindows(); // or skipOnMac() or skipOnLinux() ...

或者,您可以使用 onlyOnWindows()onlyOnMac()onlyOnLinux() 在除一个操作系统之外的所有操作系统上跳过测试。

1it('has home', function() {
2 //
3})->onlyOnWindows(); // or onlyOnMac() or onlyOnLinux() ...

有时,您可能希望在特定 PHP 版本上跳过测试。在这种情况下,您可以使用 skipOnPhp() 方法。

1it('has home', function () {
2 //
3})->skipOnPhp('>=8.0.0');

skipOnPhp() 方法的有效运算符为 >>=<<=

最后,您甚至可以在 beforeEach() 钩子中调用 skip() 方法,以便方便地跳过整个测试文件。

1beforeEach(function () {
2 //
3})->skip();

随着代码库的扩展,建议考虑提高测试套件的速度。为了帮助您做到这一点,我们提供了有关优化测试套件的全面文档:优化测试