Claude Code Plugins

Community-maintained marketplace

Feedback

nette-testing

@nette/claude-code
11
0

Provides Nette Tester testing conventions. Use when writing tests, using Assert methods, or running tester commands.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name nette-testing
description Provides Nette Tester testing conventions. Use when writing tests, using Assert methods, or running tester commands.

Testing with Nette Tester

We use Nette Tester for unit testing. Test files should have .phpt extension.

composer require nette/tester --dev

Basic Test Structure

<?php

declare(strict_types=1);

use Tester\Assert;
use Nette\Assets\SomeClass;

require __DIR__ . '/../bootstrap.php';


test('SomeClass correctly does something', function () {
	$object = new SomeClass();
	$result = $object->doSomething();

	Assert::same('expected value', $result);
});


test('SomeClass handles edge case properly', function () {
	$object = new SomeClass();
	$result = $object->handleEdgeCase();

	Assert::true($result);
});

Key points:

  • Use the test() function for each test case
  • The first parameter of test() should be a clear description of what is being tested
  • Do not add comments before test() calls - the description parameter serves this purpose
  • Group related tests in the same file

Testing Exceptions

To test if code correctly throws exceptions:

Assert::exception(
	fn() => $mapper->getAsset('missing.txt'),
	AssetNotFoundException::class,
	"Asset file 'missing.txt' not found at path: %a%",
);

The Assert::exception() method:

  1. First parameter: A closure that should throw the exception
  2. Second parameter: Expected exception class
  3. Third parameter (optional): Expected exception message, can contain placeholders (%a% means any text)

If the entire test() block is to end with an exception, you can use testException():

testException('throws exception for invalid input', function () {
	$mapper = new FilesystemMapper(__DIR__ . '/fixtures');<br>
	$mapper->getAsset('missing.txt');
}, AssetNotFoundException::class, "Asset file 'missing.txt' not found at path: %a%");

Essential Commands

# Run all tests
composer tester

# Run specific test file
vendor/bin/tester tests/common/Engine.phpt -s -C

# Run tests in specific directory
vendor/bin/tester tests/filters/ -s -C

Static Analysis & Code Quality using PHPStan

# Run PHPStan static analysis
composer phpstan