設定測試資料
功能測試資料經常被修改。這可能導致測試套件的後續執行失敗(因為資料可能已從其所處的原始狀態更改)。
如果你使用支援遷移或種子設定的 ORM 或框架(如 Doctrine , Propel , Laravel ) 設定資料來源,則可以使用此設定在每次測試執行時建立一個包含 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
現在,你的功能測試不會因資料更改而失敗。