For the complete documentation index, see llms.txt. This page is also available as Markdown.

Specs

A spec is a declaration that will usually test your system with a requirement. They are defined by calling the TestBox it() global function, which takes in a title and a body function/closure. The title is the title of this spec you will write and the body function/closure is a block of code that represents the spec.

A spec will contain most likely one or more expectations that will test the state of the SUT (software under test) or sometimes referred to as code under test. In BDD style, your specifications are what is used to validate your requirements of a scenario which is your describe() block of your story.

function run(){

     describe("A suite", function(){
          it("contains spec with an awesome expectation", function(){
               expect( true ).toBeTrue();
          });

          it("contains a spec with more than 1 expectation", function(){
               expect( [1,2,3] ).toBeArray();
               expect( [1,2,3] ).toHaveLength( 3 );
          });
     });

}

An expectation is a nice assertion DSL that TestBox exposes so you can pretty much read what should happen in the testing scenario. A spec will pass if all expectations pass. A spec with one or more expectations that fail will fail the entire spec.

Arguments

Argument
Required
Default
Type
Description

title

true

---

string

the title of the spec

body

true

---

closure/udf

The closure that represents the spec

labels

false

---

string/array

The list or array of labels this suite group belongs to

skip

false

false

Boolean

A flag or a closure that tells TestBox to skip this suite group from testing if true. If this is a closure it must return boolean.

data

false

{}

struct

A struct of data you can bind the spec with so you can use within the body closure

retries

false

0

numeric

How many extra times to run the spec when it fails or errors. 0 inherits the bundle retries annotation or the global retries option. See Retries.

Retrying Flaky Specs

A spec that depends on the outside world, such as a browser, a remote API or a slow server, can pass the retries argument to run again, up to that many extra times, before TestBox reports it. The beforeEach() and afterEach() closures run again on every attempt, and the spec stats record the attempts.

Retries can also be set for a whole bundle or run. See Retries for the precedence rules.

Attaching Files

Call attach( path, type, name ) inside a spec to attach a file, such as a screenshot or a log, to its result. Reporters list it under the spec. See Attachments.

They are closures Ma!

Since the implementations of the describe() and it() functions are closures, they can contain executable code that is necessary to implement the test. All CFML rules of scoping apply to closures, so please remember them. We recommend always using the variables scope for easy access and distinction.

Spec Data Binding

The data argument can be used to pass in a structure of data into the spec so it can be used later within the body closure. This is great when doing looping and creating dynamic closure calls:

Last updated

Was this helpful?