Symfony UX Stimulus testing is a low-level package to help write tests for Stimulus controllers in applications and reusable packages.
Symfony UX Stimulus testing is currently considered experimental.
yarn add @symfony/stimulus-testing
Symfony UX Stimulus testing ships several tools to help write tests for Stimulus controllers:
To start using Symfony UX Testing, you first need to configure a testing environment:
Create a assets/test
directory ;
Create a assets/test/setup.js
file to initialize Symfony UX Testing:
import '@symfony/stimulus-testing/setup';
assets/jest.config.js
file for Jest configuration:module.exports = {
'testRegex': 'test/.*\\.test.js',
'setupFilesAfterEnv': ['./test/setup.js']
};
assets/.babelrc
file for Babel configuration (you may need to install Babel,@babel/plugin-proposal-class-properties
and @babel/preset-env
if you haven't already):{
"presets": ["@babel/preset-env"],
"plugins": ["@babel/plugin-proposal-class-properties"]
}
hello_controller.test.js
:import { Application } from '@hotwired/stimulus';
import { clearDOM, mountDOM } from '@symfony/stimulus-testing';
import HelloController from '../controllers/hello_controller.js';
const startStimulus = () => {
const application = Application.start();
application.register('hello', HelloController);
};
describe('HelloController', () => {
let container;
beforeEach(() => {
container = mountDOM('<div data-controller="hello"></div>');
});
afterEach(() => {
clearDOM();
});
it('connect', async () => {
startStimulus();
// Write a test here ...
});
// You can create other tests here
});