unit testing @ wordpress meetup tilburg 7 januari 2014
DESCRIPTION
Unit testing @ WordPress Meetup Tilburg 7 januari 2014TRANSCRIPT
![Page 1: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/1.jpg)
UNIT TESTING
#wpm013
UNIT TESTING
![Page 2: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/2.jpg)
BARRY KOOIJ
Senior Web Developer @ Yoast Plugin developer What The File Sub Posts Contributor EDD EDD extensies Moderator WPNL forum Twitter: @cageNL
![Page 3: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/3.jpg)
MIJN SETUP
Device MacBook Pro IDE PhpStorm Versiebeheer GIT, GitHub ENV Vagrant w/ VVV Varying Vagrant Vagrants
![Page 4: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/4.jpg)
![Page 5: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/5.jpg)
WHAT
![Page 6: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/6.jpg)
WHAT ARE UNIT TESTS
“An automated piece of code that invokes your application code to check a single assumption.” — Pirate Dunbar
![Page 7: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/7.jpg)
MANUAL TESTING
Very time consuming High chance on errors Single point of knowledge
![Page 8: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/8.jpg)
![Page 9: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/9.jpg)
UNIT TESTING
Instant / very fast feedback Low chance on errors Knowledge put in code
![Page 10: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/10.jpg)
![Page 11: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/11.jpg)
HOW
![Page 12: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/12.jpg)
DEBUGGING
define( 'WP_DEBUG', true ); !if ( WP_DEBUG ) { define( 'SCRIPT_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', true ); @ini_set( 'display_errors', 1 ); } !display_errors = On; error_reporting = E_ALL | E_STRICT;
![Page 13: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/13.jpg)
TWO WAYS OF UNIT TESTING
Write your tests, then write code to make your tests pass Write your code, then write tests that pass
![Page 14: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/14.jpg)
PHPUNIT
A command line tool that runs unit tests & reports their results. Created by Sebastian Bergmann Integrated in most IDE (Eclipse, Netbeans, PHPStorm) Auto installed in Vagrant w/ Varying Vagrant Vagrants
![Page 15: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/15.jpg)
UNIT TESTS REQUIREMENTS
Each test should be able to run on its own (isolated) Easy to read Quick to execute Self explaining function names Test classes should inherit from WP_UnitTestCase (which inherits from PHPUnit_Framework_TestCase) Test functions should start w/ test (test_my_test_name)
![Page 16: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/16.jpg)
ARRANGE ACT ASSERT
Setup the context, all variables etc. !Call the method, do the action, query the database, etc. !Check if the result matches the expectations.
![Page 17: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/17.jpg)
ARRANGE ACT ASSERT
function test_get_single_role_by_user_query() { // Arrange $this->factory->user->create_many( 2, array( 'role' => 'subscriber' ) ); !!!!!!
}
![Page 18: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/18.jpg)
ARRANGE ACT ASSERT
function test_get_single_role_by_user_query() { // Arrange $this->factory->user->create_many( 2, array( 'role' => 'subscriber' ) ); ! // Act $wp_user_search = new WP_User_Query( array( 'role' => 'subscriber' ) ); $users = $wp_user_search->get_results(); !!!}
![Page 19: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/19.jpg)
ARRANGE ACT ASSERT
function test_get_single_role_by_user_query() { // Arrange $this->factory->user->create_many( 2, array( 'role' => 'subscriber' ) ); ! // Act $wp_user_search = new WP_User_Query( array( 'role' => 'subscriber' ) ); $users = $wp_user_search->get_results(); ! // Assert $this->assertEquals( 2, count( $users ) ); }
![Page 20: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/20.jpg)
ASSERTION
A way of explicitly checking the assumptions that your code makes. !assertEqual() assertTrue() assertNotNull() assertContains() assertGreaterThan() !http://phpunit.de/manual/3.8/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.assertions
![Page 21: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/21.jpg)
![Page 22: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/22.jpg)
![Page 23: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/23.jpg)
EXAMPLE
![Page 24: Unit testing @ WordPress Meetup Tilburg 7 januari 2014](https://reader033.vdocument.in/reader033/viewer/2022052900/555a6107d8b42a47748b5393/html5/thumbnails/24.jpg)
Q&A
Twitter @cageNL WordPress & Github: barrykooij 10 & 11 mei WordCamp NL