The Behat Table Comparison library provides an equality assertion for comparing Behat TableNode tables.
Install the library via Composer:
composer require --dev traviscarden/behat-table-comparisonThen use the TableEqualityAssertion class in your FeatureContext class:
<?php
use Behat\Behat\Context\Context;
use Behat\Gherkin\Node\TableNode;
use TravisCarden\BehatTableComparison\TableEqualityAssertion;
class FeatureContext implements Context
{
/**
* @Then I should include the following characters in the Company of the Ring
*/
public function iShouldIncludeTheFollowingCharactersInTheCompanyOfTheRing(TableNode $expected)
{
// Get the data from the application and create a table from it.
$application_data = [
['Frodo Baggins', 'Hobbit'],
['Samwise "Sam" Gamgee', 'Hobbit'],
['Saruman the White', 'Wizard'],
['Legolas', 'Elf'],
['Gimli', 'Dwarf'],
['Aragorn (Strider)', 'Man'],
['Boromir', 'Man'],
['Meriadoc "Merry" Brandybuck', 'Hobbit'],
['Peregrin "Pippin" Took', 'Hobbit'],
];
$actual = new TableNode($application_data);
// Build and execute assertion.
(new TableEqualityAssertion($expected, $actual))
->expectHeader(['name', 'race'])
->ignoreRowOrder()
->setMissingRowsLabel('Missing characters')
->setUnexpectedRowsLabel('Unexpected characters')
->assert();
}
}Output is like the following:
See features/bootstrap/FeatureContext.php and features/examples.feature for more examples.
Some inequality detection currently works but does not yet display a helpful error message, because it has not been decided what it should show. Please help me specify error messages for complex differences.
All contributions are welcome according to normal open source practice.
