${domainFixture} is an extension of ${doFixture} that more explicitly supports the 3 phases of ${workflow}:
* ${setup}: defines the ''given'' state of the ${sut} before the actions are carried out
* This will usually be brief compared to the sequence of actions that would need to be carried out to bring the ${sut} from its initial state into the required state
* ${actions}: defines the actions that are carried out (by a user or some other system or by a scheduled task)
* One or more of these may also carry out checks:
* Whether the result of an action is as expected
* Whether an action was rejected as invalid, as expected
* ${checks}: defines the ''expected'' state of the ${sut} after the actions have been carried out
A ${domainFixture} ${storytest} is organised into these three phases.
* They are separated with a horizontal line, using
{{{
}}}
Alternatively:
* The end of the ${setup} phase and thus the start of the ${actions} phase is signalled with the following table:
|''actions''|
* The end of the ${actions} phase and thus the start of the ${checks} phase is signalled with the following table:
|''checks''|
If there are no Actions, the ''checks'' table can be used to signal a switch from the setup phase directly into the Checks phase.
!3 For Programmers
In each of the phases the following apply at run time:
* In the ${setup}, each table defines a property-value pair. A ${setter} method is called with the value.
* In the ${actions}, ${domainFixture} acts the same as ${doFixture}
* In the ${checks}, each table defines a property-value pair. A ${getter} method is called to retrieve the value and that's matched against the expected value.
DomainTraverse provides the actual implementation.