Professional Documents
Culture Documents
About BeforeEach AfterEach - Help
About BeforeEach AfterEach - Help
-------------------------------
The BeforeEach and AfterEach commands allow you to define setup and teardown tasks
that are
performed at the beginning and end of every It block. This can eliminate
duplication of code
in test scripts, ensure that each test is performed on a pristine state regardless
of their
order, and perform any necessary clean-up tasks after each test.
BeforeEach and AfterEach blocks may be defined inside of any Describe or Context.
If they
are present in both a Context and its parent Describe, BeforeEach blocks in the
Describe scope
are executed first, followed by BeforeEach blocks in the Context scope. AfterEach
blocks are
the reverse of this, with the Context AfterEach blocks executing before Describe.
The script blocks assigned to BeforeEach and AfterEach are dot-sourced in the
Context or Describe
which contains the current It statement, so you don't have to worry about the scope
of variable
assignments. Any variables that are assigned values within a BeforeEach block can
be used inside
the body of the It block.
BeforeAll and AfterAll are used the same way as BeforeEach and AfterEach, except
that they are
executed at the beginning and end of their containing Describe or Context block.
This is
essentially syntactic sugar for the following arrangement of code:
Describe 'Something' {
try
{
<BeforeAll Code Here>
<Describe Body>
}
finally
{
<AfterAll Code Here>
}
}
Examples
-------------------------------
It 'Demonstrates that AfterEach has executed after the end of the first test' {
$afterEachVariable | Should Be 'AfterEach has been executed'
}
BeforeEach {
$beforeEachVariable = 'Set in a describe-scoped BeforeEach'
}
AfterEach {
$afterEachVariable = 'AfterEach has been executed'
}
BeforeAll {
$beforeAllVariable = 'BeforeAll has been executed'
}
}