設定測試資料

功能測試資料經常被修改。這可能導致測試套件的後續執行失敗(因為資料可能已從其所處的原始狀態更改)。

如果你使用支援遷移或種子設定的 ORM 或框架(如 DoctrinePropelLaravel ) 設定資料來源,則可以使用此設定在每次測試執行時建立一個包含 Fixture 資料的新測試資料庫。

如果你當前沒有使用其中一個(或等效的),你可以使用 Phinx 等工具快速設定新的測試資料庫或為每次測試執行準備現有資料庫(清理測試條目,將資料重置回原始狀態) )。

# Install Phinx in your project
$ php composer.phar require robmorgan/phinx

$ php vendor/bin/phinx init
Phinx by Rob Morgan - https://phinx.org. version x.x.x
Created ./phinx.xml

將資料庫憑據新增到 ./phinx.xml

$ php vendor/bin/phinx create InitialMigration

你可以使用文件中提供的語法指定資料庫表的建立和填充方式。

然後,每次執行測試時都執行如下指令碼:

#!/usr/bin/env bash

# Define the test database you'll use
DATABASE="test-database"

# Clean up and re-create this database and its contents
mysql -e "DROP DATABASE IF EXISTS $DATABASE"
mysql -e "CREATE DATABASE $DATABASE"
vendor/bin/phinx migrate

# Start your application using the test database (passed as an environment variable)
# You can access the value with $_ENV['database']
database=$DATABASE php -d variables_order=EGPCS -S localhost:8080

# Run your functional tests
vendor/bin/behat

現在,你的功能測試不會因資料更改而失敗。