设置测试数据

功能测试数据经常被修改。这可能导致测试套件的后续运行失败(因为数据可能已从其所处的原始状态更改)。

如果你使用支持迁移或种子设定的 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

现在,你的功能测试不会因数据更改而失败。