# Fixture

> Fixture represents a fixed state of a test environment.

[API reference](/docs/api/index.md) › [yii](/docs/api/yii/index.md) › [test](/docs/api/yii/test/index.md) › Fixture

| class | `yii\test\Fixture` |
| --- | --- |
| Extends | [`yii\base\Component`](/docs/api/yii/base/component/index.md) » [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| Implements | [`yii\base\Configurable`](/docs/api/yii/base/configurable/index.md) |
| Since | 2.0 |
| Source | [`framework/test/Fixture.php`](https://github.com/yiisoft/yii2/blob/22.0/framework/test/Fixture.php#L33) |

2 subclasses:

- [`ArrayFixture`](/docs/api/yii/test/arrayfixture/index.md)
- [`DbFixture`](/docs/api/yii/test/dbfixture/index.md)

Fixture represents a fixed state of a test environment.

Each fixture instance represents a particular aspect of a test environment. For example,
you may use `UserFixture` to initialize the user database table with a set of known data. You may
load the fixture when running every test method so that the user table always contains the fixed data
and thus allows your test predictable and repeatable.

A fixture may depend on other fixtures, specified via the [`$depends`](/docs/api/yii/test/fixture/index.md#property-depends) property. When a fixture is being loaded,
its dependent fixtures will be automatically loaded BEFORE the fixture; and when the fixture is being unloaded,
its dependent fixtures will be unloaded AFTER the fixture.

You should normally override [`load()`](/docs/api/yii/test/fixture/index.md#method-load) to specify how to set up a fixture; and override [`unload()`](/docs/api/yii/test/fixture/index.md#method-unload)
for clearing up a fixture.

For more details and usage information on Fixture, see the [guide article on fixtures](/docs/guide/test-fixtures/index.md).

## Properties

| Property | Type | Description | Defined by |
| --- | --- | --- | --- |
| <span id="property-behaviors"></span>[`$behaviors`](/docs/api/yii/base/component/index.md#property-behaviors) read-only | `array<`[`yii\base\Behavior`](/docs/api/yii/base/behavior/index.md)`<static>>` | List of behaviors attached to this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| [`$depends`](#property-depends) | `array` | The fixtures that this fixture depends on. Default: `[]`. | `Fixture` |

## Methods

| Method | Description | Defined by |
| --- | --- | --- |
| <span id="method-__construct"></span>[`__construct()`](/docs/api/yii/base/baseobject/index.md#method-__construct) | Constructor. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-__call"></span>[`__call()`](/docs/api/yii/base/component/index.md#method-__call) | Calls the named method which is not a class method. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-__clone"></span>[`__clone()`](/docs/api/yii/base/component/index.md#method-__clone) | This method is called after the object is created by cloning an existing one. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-__get"></span>[`__get()`](/docs/api/yii/base/component/index.md#method-__get) | Returns the value of a component property. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-__isset"></span>[`__isset()`](/docs/api/yii/base/component/index.md#method-__isset) | Checks if a property is set, i.e. defined and not null. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-__set"></span>[`__set()`](/docs/api/yii/base/component/index.md#method-__set) | Sets the value of a component property. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-__unset"></span>[`__unset()`](/docs/api/yii/base/component/index.md#method-__unset) | Sets a component property to be null. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| [`afterLoad()`](#method-afterLoad) | This method is called AFTER all fixture data have been loaded for the current test. | `Fixture` |
| [`afterUnload()`](#method-afterUnload) | This method is called AFTER all fixture data have been unloaded for the current test. | `Fixture` |
| <span id="method-attachBehavior"></span>[`attachBehavior()`](/docs/api/yii/base/component/index.md#method-attachBehavior) | Attaches a behavior to this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-attachBehaviors"></span>[`attachBehaviors()`](/docs/api/yii/base/component/index.md#method-attachBehaviors) | Attaches a list of behaviors to the component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| [`beforeLoad()`](#method-beforeLoad) | This method is called BEFORE any fixture data is loaded for the current test. | `Fixture` |
| [`beforeUnload()`](#method-beforeUnload) | This method is called BEFORE any fixture data is unloaded for the current test. | `Fixture` |
| <span id="method-behaviors"></span>[`behaviors()`](/docs/api/yii/base/component/index.md#method-behaviors) | Returns a list of behaviors that this component should behave as. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-canGetProperty"></span>[`canGetProperty()`](/docs/api/yii/base/component/index.md#method-canGetProperty) | Returns a value indicating whether a property can be read. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-canSetProperty"></span>[`canSetProperty()`](/docs/api/yii/base/component/index.md#method-canSetProperty) | Returns a value indicating whether a property can be set. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-className"></span>[`className()`](/docs/api/yii/base/baseobject/index.md#method-className) static | Returns the fully qualified name of this class. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-detachBehavior"></span>[`detachBehavior()`](/docs/api/yii/base/component/index.md#method-detachBehavior) | Detaches a behavior from the component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-detachBehaviors"></span>[`detachBehaviors()`](/docs/api/yii/base/component/index.md#method-detachBehaviors) | Detaches all behaviors from the component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-ensureBehaviors"></span>[`ensureBehaviors()`](/docs/api/yii/base/component/index.md#method-ensureBehaviors) | Makes sure that the behaviors declared in [`behaviors()`](/docs/api/yii/base/component/index.md#method-behaviors) are attached to this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-getBehavior"></span>[`getBehavior()`](/docs/api/yii/base/component/index.md#method-getBehavior) | Returns the named behavior object. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-getBehaviors"></span>[`getBehaviors()`](/docs/api/yii/base/component/index.md#method-getBehaviors) | Returns all behaviors attached to this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-hasEventHandlers"></span>[`hasEventHandlers()`](/docs/api/yii/base/component/index.md#method-hasEventHandlers) | Returns a value indicating whether there is any handler attached to the named event. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-hasMethod"></span>[`hasMethod()`](/docs/api/yii/base/component/index.md#method-hasMethod) | Returns a value indicating whether a method is defined. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-hasProperty"></span>[`hasProperty()`](/docs/api/yii/base/component/index.md#method-hasProperty) | Returns a value indicating whether a property is defined for this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-init"></span>[`init()`](/docs/api/yii/base/baseobject/index.md#method-init) | Initializes the object. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| [`load()`](#method-load) | Loads the fixture. | `Fixture` |
| <span id="method-off"></span>[`off()`](/docs/api/yii/base/component/index.md#method-off) | Detaches an existing event handler from this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-on"></span>[`on()`](/docs/api/yii/base/component/index.md#method-on) | Attaches an event handler to an event. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-trigger"></span>[`trigger()`](/docs/api/yii/base/component/index.md#method-trigger) | Triggers an event. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| [`unload()`](#method-unload) | Unloads the fixture. | `Fixture` |

## Property details

### $depends <span id="property-depends"></span>

```php
public array $depends = []
```

The fixtures that this fixture depends on.

This must be a list of the dependent
fixture class names.

## Method details

### afterLoad() <span id="method-afterLoad"></span>

```php
public function afterLoad(): mixed
```

This method is called AFTER all fixture data have been loaded for the current test.

**Returns**

`mixed`

### afterUnload() <span id="method-afterUnload"></span>

```php
public function afterUnload(): mixed
```

This method is called AFTER all fixture data have been unloaded for the current test.

**Returns**

`mixed`

### beforeLoad() <span id="method-beforeLoad"></span>

```php
public function beforeLoad(): mixed
```

This method is called BEFORE any fixture data is loaded for the current test.

**Returns**

`mixed`

### beforeUnload() <span id="method-beforeUnload"></span>

```php
public function beforeUnload(): mixed
```

This method is called BEFORE any fixture data is unloaded for the current test.

**Returns**

`mixed`

### load() <span id="method-load"></span>

```php
public function load(): mixed
```

Loads the fixture.

This method is called before performing every test method.
You should override this method with concrete implementation about how to set up the fixture.

**Returns**

`mixed`

### unload() <span id="method-unload"></span>

```php
public function unload(): mixed
```

Unloads the fixture.

This method is called after every test method finishes.
You may override this method to perform necessary cleanup work for the fixture.

**Returns**

`mixed`