This project implements the cucumber wire protocol for PHP projects. Information about the wire protocol: http://wiki.github.com/aslakhellesoy/cucumber/wire-protocol
Using this protocol it is possible to directly interact with PHP code at any level without the need for a web server. To accomplish this, when cucumber is running against a directory containing feature files and it cannot resolve a particular step definition, it will ask a known wire server (as defined in a .wire file) to interpret and run those steps.
To install Cuke4Php, follow these steps:
- install dependencies with bundler
- run rake build
- install gem under pkg/ folder
- run 'cuke4php path/to/features' from the command line
- make sure your cucumber features has a 'Cuke4Php.wire' file containing the appropriate information (copy the one in cuke4php/features/step_definitions)
- you can write both Ruby and PHP steps
- you should load phpunit from a file in step_definitions/support/
- support an option like 'cuke4php --init' which will generate the directory structure and support files necessary to use cuke4php with a php project.
- autodetect an available port and then use it to run the cuke4php server pass this on to cucumber by setting an environment variable (requires a modification to cucumber)
- once the patch for erb templating in .wire files is released, we should set a minimum version for it
- PHPUnit >= 3.0 (see http://www.phpunit.de/)
This project utilizes PHPUnit because it has a robust set of assertions, has good mocking, and is widely used. This will facilitate adoption by developers who are already familiar with it.
This project was developed against the 5.2.x versions of PHP, to ensure compatibility with older PHP projects.
Support for this project was provided by iContact, inc. (http://www.icontact.com)
Kevin Olbrich, Ph.D. (email@example.com) Alessandro Dal Grande (firstname.lastname@example.org)