Skip to main content

Testing

WordPress MVC (WPMVC) includes built-in support for unit testing using PHPUnit integrated with the WordPress Test Suite.

The framework simplifies setting up the testing environment and generating test cases using the Ayuco CLI tool.

Requirements

To run tests, the following components are required:

  • PHPUnit – A PHP unit testing framework.
  • WordPress Test Suite – The official test library provided by WordPress that PHPUnit uses to run WordPress-level tests.
  • WP testing config file – A configuration file similar to wp-config.php that sets up the testing environment (database connection, WordPress path, theme, etc).
  • phpunit.xml – PHPUnit configuration file in your project root defining where tests and bootstrap files are located.
  • phpunit.json (optional) – WPMVC's test config to specify suite locations and where to find the WordPress Test Suite.

Setup

WPMVC leverages the Ayuco CLI to streamline testing setup.

Run:

php ayuco setup tests

This command starts a setup wizard that will:

  • Download PHPUnit (if not already installed).
  • Download the WordPress Test Suite.
  • Generate appropriate configuration files in your project.
  • Create a /tests directory in your project root.

After completion, your project will be ready for running automated tests.

Creating Test Cases

WPMVC supports generating PHPUnit test files via Ayuco commands.

Use:

php ayuco create test:{handler}
  • {handler} -> Name of the test case, e.g. Hooks. Or test case plus method, e.g. Hooks@test_yolo_filter.

Examples:

php ayuco create test:Hooks
php ayuco create test:Hooks@test_yolo_filter

This will generate a file like:

/tests/cases/HooksTest.php

…and inside it, a method test_yolo_filter() ready for assertions.

Writing Tests

Generated test classes should extend the WordPress test base class (WP_UnitTestCase) to access helper methods and assertions provided by the WordPress Test Suite.

Example:

tests/cases/HooksTest.php
class HooksTest extends WP_UnitTestCase
{
public function test_yolo_filter()
{
// Execute filter
$string = apply_filters( 'yolo', 'A string value' );

// Assert expectation
$this->assertEquals( 'A string value [YOLO]', $string );
}
}

Running Tests

With PHPUnit installed and your test suite configured, run all tests from your project root:

./vendor/bin/phpunit

This will execute all test cases in your /tests directory and output results.

Notes

  • The setup wizard organizes and bootstraps both PHPUnit and the WordPress Test Suite so you can start writing tests quickly.
  • Tests can cover both framework utilities (hooks, helpers, models) and application code that integrates with WordPress core features.
  • The testing configuration files (phpunit.xml and phpunit.json) let you customize paths, bootstrap scripts, and suites.