Requires ColdBox 4.2+ and TestBox 2.3+
Install the package from ForgeBox:
box install integrated
Important:
Add the Integrated lib directory to this.javaSettings
in your *tests*
directory's Application.cfc
.
this.javaSettings = { loadPaths = [ "Integrated/lib" ], reloadOnChange = false };
Change your Integration tests to extend from Integration.BaseSpecs.ColdBoxBaseSpec
. (Make sure to call the parent class's beforeAll
method.)
component extends="Integrated.BaseSpecs.ColdBoxBaseSpec" {
function beforeAll() {
// Make sure to call the parent class's beforeAll() and afterAll() methods.
super.beforeAll();
}
function afterAll() {
super.afterAll();
}
}
Start using an easy, fluent API for your integration tests!
function run() {
describe( "Registering", function() {
it( "allows a new user to register for the site", function() {
this.visitEvent('register.new')
.type('Eric', 'name')
.type('mYAw$someP2ssw0rd!', 'password')
.press('Register')
.seeTitleIs('Home')
.seeOnPage('Welcome, Eric!');
});
});
}
You can see all the different methods you can call in the menu.
You can add automatic database transactions by adding one line to the top of your spec:
component extends="Integrated.BaseSpecs.ColdBoxBaseSpec" {
this.useDatabaseTransactions = true;
function run() {
describe( "Registering", function() {
it( "allows a new user to register for the site", function() {
this.visitEvent('register.new')
.type('Eric', 'name')
.type('mYAw$someP2ssw0rd!', 'password')
.press('Register')
.seeTitleIs('Home')
.seeOnPage('Welcome, Eric!');
});
});
}
}
Easily add database transactions around your tests by adding this one property to your test:
this.useDatabaseTransactions = true;
By default, we clear out the session scope on each request. If you want to persist the session scope across requests, simply add this.persistSessionScope = true;
to the top of your spec. Note: this will happen for all tests in the file.
This package is heavily inspired by Jeffrey Way's Integrated package for Laravel. I learned about it at Laracasts, which I consider my best programming resource regardless of the fact that I have never deployed a line of PHP code.