Extend TestBox your way!
TestBox supports the concepts of modules just like how ColdBox has modules. They are self-contained packages that can extend the functionality of TestBox. They can listen to test creations, errors, failures, skippings and much more. To get started you can use the TestBox CLI to generate a module for you:
testbox generate module MyModule
A TestBox module layout is similar to a ColdBox Module layout. They have to be installed at
/testbox/system/modulesto be discovered and loaded and have one mandatory file:
ModuleConfig.cfcwhich must exist in the root of the module folder.
You can install TestBox modules from ForgeBox via the
install id=module directory=testbox/system/modules
- There is no WireBox
- There is no Routing
- There is no Scheduling
- There is no Interceptors
- There is no Views
- Inception works, but limited
- No module dependencies, all modules are loaded in discovered order
This is the main descriptor file for your TestBox module.
It must have three mandatory callbacks:
configure()- Configures the module for operation
onLoad()- When the module is now activated
onUnload()- When the module is deactivated
The following are the injected properties:
The following are injected methods:
If a module fails to be activated, it will still be in the module registry but marked inactive via the
activeboolean key in its registry entry. You will also find the cause of the failure in the console logs and the key
activationFailureof the module's registry entry.
writedump( testbox.getModuleRegistry() )
Not all ColdBox/CommandBox modules can be TestBox modules. Remember that TestBox modules are extremely lightweight and testing focused.
This ModuleConfig can also listen to the following test life-cycle events. It will also receive several arguments to the call. Here are the common descriptions of the arguments
target- The bundle in question
testResults- The TestBox results object
suite- The suite descriptor
suiteStats- The stats for the running suite
exception- A ColdFusion exception
spec- The spec descriptor
specStats- The stats of the running spec
You can also manually register and activate modules by using the
registerAndActivate( invocationPath )method of the TestBox object. All you have to do is pass the invocation path to your modules' root folder:
testbox.registerAndActivate( "tests.resources.modules.MyModule" )
That's it! It will register it and activate and be ready to listen.