---
name: "Test2::Tools::Defer"
section: "3perl"
platform: "linux"
package: "perl"
version: "5.44.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Test2::Tools::Defer/3perl"
---

# Test2::Tools::Defer(3perl)

Write tests that get executed at a later time

## NAME

Test2::Tools::Defer - Write tests that get executed at a later time

## DESCRIPTION

Sometimes you need to test things BEFORE loading the necessary functions. This module lets you do that. You can write tests, and then have them run later, after `"Test2"` is loaded. You tell it what test function to run, and what arguments to give it.  The function name and arguments will be stored to be executed later. When ready, run `do_def()` to kick them off once the functions are defined.

## SYNOPSIS

```
    use strict;
    use warnings;
    use Test2::Tools::Defer;
    BEGIN {
        def ok => (1, 'pass');
        def is => ('foo', 'foo', 'runs is');
        ...
    }
    use Test2::Tools::Basic;
    do_def(); # Run the tests
    # Declare some more tests to run later:
    def ok => (1, "another pass");
    ...
    do_def(); # run the new tests
    done_testing;
```

## EXPORTS

- def function =\> @args;

  This will store the function name, and the arguments to be run later. Note that each package has a separate store of tests to run.

- **do\_def()**

  This will run all the stored tests. It will also reset the list to be empty so you can add more tests to run even later.

## SOURCE

The source code repository for Test2-Suite can be found at *https://github.com/Test-More/test-more/*.

## MAINTAINERS

- Chad Granum \<exodist@cpan.org\>

  ## AUTHORS

- Chad Granum \<exodist@cpan.org\>

  ## COPYRIGHT

Copyright Chad Granum \<exodist@cpan.org\>.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See *http://dev.perl.org/licenses/*
