Enviar pesquisa
Carregar
2010 07-28-testing-zf-apps
•
0 gostou
•
390 visualizações
Venkata Ramana
Seguir
oracle
Leia menos
Leia mais
Educação
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 54
Baixar agora
Baixar para ler offline
Recomendados
Beginning PHPUnit
Beginning PHPUnit
Jace Ju
Unit testing PHP apps with PHPUnit
Unit testing PHP apps with PHPUnit
Michelangelo van Dam
Phpunit testing
Phpunit testing
Nikunj Bhatnagar
Test in action week 2
Test in action week 2
Yi-Huan Chan
Test Driven Development with PHPUnit
Test Driven Development with PHPUnit
Mindfire Solutions
Unit Testing Presentation
Unit Testing Presentation
nicobn
Introduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnit
Michelangelo van Dam
PHPUnit: from zero to hero
PHPUnit: from zero to hero
Jeremy Cook
Recomendados
Beginning PHPUnit
Beginning PHPUnit
Jace Ju
Unit testing PHP apps with PHPUnit
Unit testing PHP apps with PHPUnit
Michelangelo van Dam
Phpunit testing
Phpunit testing
Nikunj Bhatnagar
Test in action week 2
Test in action week 2
Yi-Huan Chan
Test Driven Development with PHPUnit
Test Driven Development with PHPUnit
Mindfire Solutions
Unit Testing Presentation
Unit Testing Presentation
nicobn
Introduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnit
Michelangelo van Dam
PHPUnit: from zero to hero
PHPUnit: from zero to hero
Jeremy Cook
PHPUnit
PHPUnit
Hampton Roads PHP User Grop
PhpUnit Best Practices
PhpUnit Best Practices
Edorian
PHPUnit best practices presentation
PHPUnit best practices presentation
Thanh Robi
Test in action week 4
Test in action week 4
Yi-Huan Chan
Advanced PHPUnit Testing
Advanced PHPUnit Testing
Mike Lively
New Features PHPUnit 3.3 - Sebastian Bergmann
New Features PHPUnit 3.3 - Sebastian Bergmann
dpc
Test in action week 3
Test in action week 3
Yi-Huan Chan
Test driven node.js
Test driven node.js
Jay Harris
Unit Testing using PHPUnit
Unit Testing using PHPUnit
varuntaliyan
Test your code like a pro - PHPUnit in practice
Test your code like a pro - PHPUnit in practice
Sebastian Marek
Test driven development_for_php
Test driven development_for_php
Lean Teams Consultancy
Testing Code and Assuring Quality
Testing Code and Assuring Quality
Kent Cowgill
Unit testing with PHPUnit - there's life outside of TDD
Unit testing with PHPUnit - there's life outside of TDD
Paweł Michalik
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
kwatch
EPHPC Webinar Slides: Unit Testing by Arthur Purnama
EPHPC Webinar Slides: Unit Testing by Arthur Purnama
Enterprise PHP Center
PHPUnit testing to Zend_Test
PHPUnit testing to Zend_Test
Michelangelo van Dam
Python testing using mock and pytest
Python testing using mock and pytest
Suraj Deshmukh
Unit Testng with PHP Unit - A Step by Step Training
Unit Testng with PHP Unit - A Step by Step Training
Ram Awadh Prasad, PMP
Test in action – week 1
Test in action – week 1
Yi-Huan Chan
Testing the frontend
Testing the frontend
Heiko Hardt
Brevarex
Brevarex
Brevarex_Ukraine
Brevarex Ukraine
Brevarex Ukraine
Brevarex_Ukraine
Mais conteúdo relacionado
Mais procurados
PHPUnit
PHPUnit
Hampton Roads PHP User Grop
PhpUnit Best Practices
PhpUnit Best Practices
Edorian
PHPUnit best practices presentation
PHPUnit best practices presentation
Thanh Robi
Test in action week 4
Test in action week 4
Yi-Huan Chan
Advanced PHPUnit Testing
Advanced PHPUnit Testing
Mike Lively
New Features PHPUnit 3.3 - Sebastian Bergmann
New Features PHPUnit 3.3 - Sebastian Bergmann
dpc
Test in action week 3
Test in action week 3
Yi-Huan Chan
Test driven node.js
Test driven node.js
Jay Harris
Unit Testing using PHPUnit
Unit Testing using PHPUnit
varuntaliyan
Test your code like a pro - PHPUnit in practice
Test your code like a pro - PHPUnit in practice
Sebastian Marek
Test driven development_for_php
Test driven development_for_php
Lean Teams Consultancy
Testing Code and Assuring Quality
Testing Code and Assuring Quality
Kent Cowgill
Unit testing with PHPUnit - there's life outside of TDD
Unit testing with PHPUnit - there's life outside of TDD
Paweł Michalik
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
kwatch
EPHPC Webinar Slides: Unit Testing by Arthur Purnama
EPHPC Webinar Slides: Unit Testing by Arthur Purnama
Enterprise PHP Center
PHPUnit testing to Zend_Test
PHPUnit testing to Zend_Test
Michelangelo van Dam
Python testing using mock and pytest
Python testing using mock and pytest
Suraj Deshmukh
Unit Testng with PHP Unit - A Step by Step Training
Unit Testng with PHP Unit - A Step by Step Training
Ram Awadh Prasad, PMP
Test in action – week 1
Test in action – week 1
Yi-Huan Chan
Testing the frontend
Testing the frontend
Heiko Hardt
Mais procurados
(20)
PHPUnit
PHPUnit
PhpUnit Best Practices
PhpUnit Best Practices
PHPUnit best practices presentation
PHPUnit best practices presentation
Test in action week 4
Test in action week 4
Advanced PHPUnit Testing
Advanced PHPUnit Testing
New Features PHPUnit 3.3 - Sebastian Bergmann
New Features PHPUnit 3.3 - Sebastian Bergmann
Test in action week 3
Test in action week 3
Test driven node.js
Test driven node.js
Unit Testing using PHPUnit
Unit Testing using PHPUnit
Test your code like a pro - PHPUnit in practice
Test your code like a pro - PHPUnit in practice
Test driven development_for_php
Test driven development_for_php
Testing Code and Assuring Quality
Testing Code and Assuring Quality
Unit testing with PHPUnit - there's life outside of TDD
Unit testing with PHPUnit - there's life outside of TDD
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
EPHPC Webinar Slides: Unit Testing by Arthur Purnama
EPHPC Webinar Slides: Unit Testing by Arthur Purnama
PHPUnit testing to Zend_Test
PHPUnit testing to Zend_Test
Python testing using mock and pytest
Python testing using mock and pytest
Unit Testng with PHP Unit - A Step by Step Training
Unit Testng with PHP Unit - A Step by Step Training
Test in action – week 1
Test in action – week 1
Testing the frontend
Testing the frontend
Destaque
Brevarex
Brevarex
Brevarex_Ukraine
Brevarex Ukraine
Brevarex Ukraine
Brevarex_Ukraine
Brevarex
Brevarex
Brevarex_Ukraine
Demo for moodle
Demo for moodle
jbuttery
YooMee - геосоциальная сеть с играми в дополненной реальности
YooMee - геосоциальная сеть с играми в дополненной реальности
Марина Иванова
Seo slideshow
Seo slideshow
adamyax
Ergonomi
Ergonomi
zoezoepratama
Brevarex for medi
Brevarex for medi
Brevarex_Ukraine
Demo for moodle
Demo for moodle
jbuttery
Fire safety pp
Fire safety pp
jbuttery
Les chaînes de valeur de la Télévision Mobile Personnelle
Les chaînes de valeur de la Télévision Mobile Personnelle
mchevalier
Japans tsunami
Japans tsunami
mkk1313
Case Study Notes
Case Study Notes
mkk1313
Editing Process
Editing Process
mkk1313
The marketing of meatloaf
The marketing of meatloaf
mkk1313
Question 6
Question 6
mkk1313
Info College Lp
Info College Lp
leloux
Questionnaire results
Questionnaire results
mkk1313
Lemur
Lemur
guest5b972f
Paris Web
Paris Web
cyrildoussin
Destaque
(20)
Brevarex
Brevarex
Brevarex Ukraine
Brevarex Ukraine
Brevarex
Brevarex
Demo for moodle
Demo for moodle
YooMee - геосоциальная сеть с играми в дополненной реальности
YooMee - геосоциальная сеть с играми в дополненной реальности
Seo slideshow
Seo slideshow
Ergonomi
Ergonomi
Brevarex for medi
Brevarex for medi
Demo for moodle
Demo for moodle
Fire safety pp
Fire safety pp
Les chaînes de valeur de la Télévision Mobile Personnelle
Les chaînes de valeur de la Télévision Mobile Personnelle
Japans tsunami
Japans tsunami
Case Study Notes
Case Study Notes
Editing Process
Editing Process
The marketing of meatloaf
The marketing of meatloaf
Question 6
Question 6
Info College Lp
Info College Lp
Questionnaire results
Questionnaire results
Lemur
Lemur
Paris Web
Paris Web
Semelhante a 2010 07-28-testing-zf-apps
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
Michelangelo van Dam
Automated Unit Testing
Automated Unit Testing
Mike Lively
Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012
Michelangelo van Dam
Leveling Up With Unit Testing - php[tek] 2023
Leveling Up With Unit Testing - php[tek] 2023
Mark Niebergall
Leveling Up With Unit Testing - LonghornPHP 2022
Leveling Up With Unit Testing - LonghornPHP 2022
Mark Niebergall
Testing with VS2010 - A Bugs Life
Testing with VS2010 - A Bugs Life
Peter Gfader
Php tests tips
Php tests tips
Damian Sromek
Php unit (eng)
Php unit (eng)
Anatoliy Okhotnikov
Workshop quality assurance for php projects - phpdublin
Workshop quality assurance for php projects - phpdublin
Michelangelo van Dam
Zend Framework 2 Patterns
Zend Framework 2 Patterns
Zend by Rogue Wave Software
Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013
Michelangelo van Dam
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
SpringPeople
Unit testing php-unit - phing - selenium_v2
Unit testing php-unit - phing - selenium_v2
Tricode (part of Dept)
UA testing with Selenium and PHPUnit - TrueNorthPHP 2013
UA testing with Selenium and PHPUnit - TrueNorthPHP 2013
Michelangelo van Dam
PHP Unit Testing in Yii
PHP Unit Testing in Yii
IlPeach
Unit testing zend framework apps
Unit testing zend framework apps
Michelangelo van Dam
Test Driven Development with Sql Server
Test Driven Development with Sql Server
David P. Moore
Unit testing
Unit testing
Prabhat Kumar
Workshop quality assurance for php projects - phpbelfast
Workshop quality assurance for php projects - phpbelfast
Michelangelo van Dam
Strategy-driven Test Generation with Open Source Frameworks
Strategy-driven Test Generation with Open Source Frameworks
Dimitry Polivaev
Semelhante a 2010 07-28-testing-zf-apps
(20)
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
Automated Unit Testing
Automated Unit Testing
Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012
Leveling Up With Unit Testing - php[tek] 2023
Leveling Up With Unit Testing - php[tek] 2023
Leveling Up With Unit Testing - LonghornPHP 2022
Leveling Up With Unit Testing - LonghornPHP 2022
Testing with VS2010 - A Bugs Life
Testing with VS2010 - A Bugs Life
Php tests tips
Php tests tips
Php unit (eng)
Php unit (eng)
Workshop quality assurance for php projects - phpdublin
Workshop quality assurance for php projects - phpdublin
Zend Framework 2 Patterns
Zend Framework 2 Patterns
Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
Unit testing php-unit - phing - selenium_v2
Unit testing php-unit - phing - selenium_v2
UA testing with Selenium and PHPUnit - TrueNorthPHP 2013
UA testing with Selenium and PHPUnit - TrueNorthPHP 2013
PHP Unit Testing in Yii
PHP Unit Testing in Yii
Unit testing zend framework apps
Unit testing zend framework apps
Test Driven Development with Sql Server
Test Driven Development with Sql Server
Unit testing
Unit testing
Workshop quality assurance for php projects - phpbelfast
Workshop quality assurance for php projects - phpbelfast
Strategy-driven Test Generation with Open Source Frameworks
Strategy-driven Test Generation with Open Source Frameworks
Último
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
RoyAbrique
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
dawncurless
mini mental status format.docx
mini mental status format.docx
PoojaSen20
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
NirmalaLoungPoorunde1
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
FatimaKhan178732
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
Chameera Dedduwage
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
RKavithamani
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
Celine George
microwave assisted reaction. General introduction
microwave assisted reaction. General introduction
Maksud Ahmed
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
TechSoup
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
Steve Thomason
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
Sayali Powar
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
manuelaromero2013
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpin
RaunakKeshri1
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
Marc Dusseiller Dusjagr
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
misteraugie
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
heathfieldcps1
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
VS Mahajan Coaching Centre
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
Maestría en Comunicación Digital Interactiva - UNR
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
eniolaolutunde
Último
(20)
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
mini mental status format.docx
mini mental status format.docx
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
microwave assisted reaction. General introduction
microwave assisted reaction. General introduction
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpin
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
2010 07-28-testing-zf-apps
1.
© All rights
reserved. Zend Technologies, Inc. Testing Your Zend Framework MVC Application Matthew Weier O'Phinney Project Lead Zend Framework
2.
© All rights
reserved. Zend Technologies, Inc. What we'll cover ● Unit Testing basics ● Basic functional testing in ZF ● Several “Advanced” ZF testing topics
3.
© All rights
reserved. Zend Technologies, Inc. Why test?
4.
© All rights
reserved. Zend Technologies, Inc. Simplify maintenance ● Testing defines expectations ● Testing describes behaviors identified by the application ● Testing tells us when new changes break existing code and behaviors
5.
© All rights
reserved. Zend Technologies, Inc. Quantify code quality ● Code coverage exercised by unit tests ● Test methods document behaviors code should define
6.
6 © All
rights reserved. Zend Technologies, Inc. Psychological benefits Warm fuzzy feeling from seeing green
7.
7 © All
rights reserved. Zend Technologies, Inc. Testing is not… reloading
8.
8 © All
rights reserved. Zend Technologies, Inc. Testing is not… var_dump()
9.
9 © All
rights reserved. Zend Technologies, Inc. Testing is… reproducible
10.
10 © All
rights reserved. Zend Technologies, Inc. Testing is… automatable
11.
© All rights
reserved. Zend Technologies, Inc. Good testing includes… ● Defined behaviors ● Code examples of use cases ● Expectations
12.
© All rights
reserved. Zend Technologies, Inc. PHP testing frameworks ● PHPT ▶ Used by PHP, and some PEAR and independent libraries ● SimpleTest ▶ JUnit-style testing framework ● PHPUnit ▶ JUnit-style testing framework ▶ De facto industry standard
13.
13 © All
rights reserved. Zend Technologies, Inc. Testing Basics
14.
© All rights
reserved. Zend Technologies, Inc. Writing unit tests ● Create a test class ● Create one or more methods describing behaviors ▶ State the behaviors in natural language ● Write code that creates the behavior(s) ▶ Write code exercising the API ● Write assertions indicating expectations
15.
© All rights
reserved. Zend Technologies, Inc. Create a test class ● Usually, named after the Unit Under Test class EntryTest extends PHPUnit_Framework_TestCase { } class EntryTest extends PHPUnit_Framework_TestCase { }
16.
© All rights
reserved. Zend Technologies, Inc. Write a method describing a behavior ● Prefix with “test” class EntryTest extends PHPUnit_Framework_TestCase { public function testMaySetTimestampWithString() { } } class EntryTest extends PHPUnit_Framework_TestCase { public function testMaySetTimestampWithString() { } }
17.
© All rights
reserved. Zend Technologies, Inc. Write code creating the behavior class EntryTest extends PHPUnit_Framework_TestCase { public function testMaySetTimestampWithString() { $string = 'Fri, 7 May 2010 09:26:03 -0700'; $ts = strtotime($string); $this->entry->setTimestamp($string); $setValue = $this->entry->getTimestamp(); } } class EntryTest extends PHPUnit_Framework_TestCase { public function testMaySetTimestampWithString() { $string = 'Fri, 7 May 2010 09:26:03 -0700'; $ts = strtotime($string); $this->entry->setTimestamp($string); $setValue = $this->entry->getTimestamp(); } }
18.
© All rights
reserved. Zend Technologies, Inc. Write assertions of expectations class EntryTest extends PHPUnit_Framework_TestCase { public function testMaySetTimestampWithString() { $string = 'Fri, 7 May 2010 09:26:03 -0700'; $ts = strtotime($string); $this->entry->setTimestamp($string); $setValue = $this->entry->getTimestamp(); $this->assertSame($ts, $setValue); } } class EntryTest extends PHPUnit_Framework_TestCase { public function testMaySetTimestampWithString() { $string = 'Fri, 7 May 2010 09:26:03 -0700'; $ts = strtotime($string); $this->entry->setTimestamp($string); $setValue = $this->entry->getTimestamp(); $this->assertSame($ts, $setValue); } }
19.
© All rights
reserved. Zend Technologies, Inc. Run the tests ● Failure? ▶ Check your tests and assertions for potential typos or usage errors ▶ Check the Unit Under Test for errors ▶ Make corrections and re-run the tests ● Success? ▶ Move on to the next behavior or feature!
20.
20 © All
rights reserved. Zend Technologies, Inc. Some testing terminology
21.
© All rights
reserved. Zend Technologies, Inc. Test scaffolding ● Make sure your environment is free of assumptions ● Initialize any dependencies necessary prior to testing ● Usually done in the “setUp()” method
22.
© All rights
reserved. Zend Technologies, Inc. Test doubles ● Stubs Replacing an object with another so that the system under test can continue down a path. ● Mock Objects Replacing an object with another and defining expectations for it.
23.
© All rights
reserved. Zend Technologies, Inc. Additional testing types ● Conditional testing Testing only when certain environmental conditions are met. ● Functional and Integration tests Testing that the systems as a whole behaves as expected; testing that the units interact as exected.
24.
24 © All
rights reserved. Zend Technologies, Inc. Quasi-Functional testing in Zend Framework
25.
© All rights
reserved. Zend Technologies, Inc. Overview ● Setup the phpunit environment ● Create a TestCase based on ControllerTestCase ● Bootstrap the application ● Create and dispatch a request ● Perform assertions on the response
26.
© All rights
reserved. Zend Technologies, Inc. The PHPUnit environment ● Directory structure tests |-- application | `-- controllers |-- Bootstrap.php |-- library | `-- Custom `-- phpunit.xml 4 directories, 2 files tests |-- application | `-- controllers |-- Bootstrap.php |-- library | `-- Custom `-- phpunit.xml 4 directories, 2 files
27.
© All rights
reserved. Zend Technologies, Inc. The PHPUnit environment ● phpunit.xml <phpunit bootstrap="./Bootstrap.php"> <testsuite name="Test Suite"> <directory>./</directory> </testsuite> <filter> <whitelist> <directory suffix=".php">../library/</directory> <directory suffix=".php">../application/</directory> <exclude> <directory suffix=".phtml">../application/</directory> </exclude> </whitelist> </filter> </phpunit> <phpunit bootstrap="./Bootstrap.php"> <testsuite name="Test Suite"> <directory>./</directory> </testsuite> <filter> <whitelist> <directory suffix=".php">../library/</directory> <directory suffix=".php">../application/</directory> <exclude> <directory suffix=".phtml">../application/</directory> </exclude> </whitelist> </filter> </phpunit>
28.
© All rights
reserved. Zend Technologies, Inc. The PHPUnit environment ● Bootstrap.php $rootPath = realpath(dirname(__DIR__)); if (!defined('APPLICATION_PATH')) { define('APPLICATION_PATH', $rootPath . '/application'); } if (!defined('APPLICATION_ENV')) { define('APPLICATION_ENV', 'testing'); } set_include_path(implode(PATH_SEPARATOR, array( '.', $rootPath . '/library', get_include_path(), ))); require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->registerNamespace('Custom_'); $rootPath = realpath(dirname(__DIR__)); if (!defined('APPLICATION_PATH')) { define('APPLICATION_PATH', $rootPath . '/application'); } if (!defined('APPLICATION_ENV')) { define('APPLICATION_ENV', 'testing'); } set_include_path(implode(PATH_SEPARATOR, array( '.', $rootPath . '/library', get_include_path(), ))); require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->registerNamespace('Custom_');
29.
© All rights
reserved. Zend Technologies, Inc. Create a test case class ● Extend Zend_Test_PHPUnit_ControllerTestCase class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { } class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { }
30.
© All rights
reserved. Zend Technologies, Inc. Bootstrap the application ● Create a Zend_Application instance, and reference it in your setUp() class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { public function setUp() { $this->bootstrap = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); parent::setUp(); } } class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { public function setUp() { $this->bootstrap = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); parent::setUp(); } }
31.
© All rights
reserved. Zend Technologies, Inc. Create and dispatch a request ● Simple method: dispatch a “url” class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { // ... public function testStaticPageHasGoodStructure() { $this->dispatch('/example/page'); // ... } } class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { // ... public function testStaticPageHasGoodStructure() { $this->dispatch('/example/page'); // ... } }
32.
© All rights
reserved. Zend Technologies, Inc. Create and dispatch a request ● More advanced: customize the request object prior to dispatching class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { // ... public function testXhrRequestReturnsJson() { $this->getRequest() ->setHeader('X-Requested-With', 'XMLHttpRequest') ->setQuery('format', 'json'); $this->dispatch('/example/xhr-endpoint'); // ... } } class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { // ... public function testXhrRequestReturnsJson() { $this->getRequest() ->setHeader('X-Requested-With', 'XMLHttpRequest') ->setQuery('format', 'json'); $this->dispatch('/example/xhr-endpoint'); // ... } }
33.
© All rights
reserved. Zend Technologies, Inc. Create assertions ● Typical assertions are for: ▶ Structure of response markup Using either CSS selectors or XPath assertions. ▶ HTTP response headers and status code ▶ Request and/or Response object artifacts
34.
© All rights
reserved. Zend Technologies, Inc. CSS Selector assertions ● assertQuery($path, $message = '') ● assertQueryContentContains( $path, $match, $message = '') ● assertQueryContentRegex( $path, $pattern, $message = '') ● assertQueryCount($path, $count, $message = '') ● assertQueryCountMin($path, $count, $message = '') ● assertQueryCountMax($path, $count, $message = '') ● each has a "Not" variant
35.
© All rights
reserved. Zend Technologies, Inc. XPath Selector assertions ● assertXpath($path, $message = '') ● assertXpathContentContains( $path, $match, $message = '') ● assertXpathContentRegex( $path, $pattern, $message = '') ● assertXpathCount($path, $count, $message = '') ● assertXpathCountMin($path, $count, $message = '') ● assertXpathCountMax($path, $count, $message = '') ● each has a "Not" variant
36.
© All rights
reserved. Zend Technologies, Inc. Redirect assertions ● assertRedirect($message = '') ● assertRedirectTo($url, $message = '') ● assertRedirectRegex($pattern, $message = '') ● each has a "Not" variant
37.
© All rights
reserved. Zend Technologies, Inc. Response assertions ● assertResponseCode($code, $message = '') ● assertHeader($header, $message = '') ● assertHeaderContains($header, $match, $message = '') ● assertHeaderRegex($header, $pattern, $message = '') ● each has a "Not" variant
38.
© All rights
reserved. Zend Technologies, Inc. Request assertions ● assertModule($module, $message = '') ● assertController($controller, $message = '') ● assertAction($action, $message = '') ● assertRoute($route, $message = '') ● each has a "Not" variant
39.
© All rights
reserved. Zend Technologies, Inc. Assertion examples public function testSomeStaticPageHasGoodStructure() { $this->dispatch('/example/page'); $this->assertResponseCode(200); $this->assertQuery('div#content p'); $this->assertQueryCount('div#sidebar ul li', 3); } public function testSomeStaticPageHasGoodStructure() { $this->dispatch('/example/page'); $this->assertResponseCode(200); $this->assertQuery('div#content p'); $this->assertQueryCount('div#sidebar ul li', 3); }
40.
© All rights
reserved. Zend Technologies, Inc. Assertion examples public function testXhrRequestReturnsJson() { // ... $this->assertNotRedirect(); $this->assertHeaderContains( 'Content-Type', 'application/json'); } public function testXhrRequestReturnsJson() { // ... $this->assertNotRedirect(); $this->assertHeaderContains( 'Content-Type', 'application/json'); }
41.
41 © All
rights reserved. Zend Technologies, Inc. Advanced Topics or: real world use cases
42.
© All rights
reserved. Zend Technologies, Inc. Testing models and resources ● The Problem: These classes cannot be autoloaded with the standard autoloader. ● The Solution: Use Zend_Application to bootstrap the “modules” resource during setUp()
43.
© All rights
reserved. Zend Technologies, Inc. Testing models and resources class Blog_Model_EntryTest extends PHPUnit_Framework_TestCase { public function setUp() { $this->bootstrap = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $this->bootstrap->bootstrap('modules'); $this->model = new Blog_Model_Entry(); } } class Blog_Model_EntryTest extends PHPUnit_Framework_TestCase { public function setUp() { $this->bootstrap = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $this->bootstrap->bootstrap('modules'); $this->model = new Blog_Model_Entry(); } }
44.
© All rights
reserved. Zend Technologies, Inc. Testing actions requiring authentication ● The Problem: Some actions may require an authenticated user; how can you emulate this? ● The Solution: Manually authenticate against Zend_Auth prior to calling dispatch().
45.
© All rights
reserved. Zend Technologies, Inc. Authenticating a test user class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { // ... public function loginUser($user) { $params = array('user' => $user); $adapter = new Custom_Auth_TestAdapter( $params); $auth = Zend_Auth::getInstance(); $auth->authenticate($adapter); $this->assertTrue($auth->hasIdentity()); } } class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { // ... public function loginUser($user) { $params = array('user' => $user); $adapter = new Custom_Auth_TestAdapter( $params); $auth = Zend_Auth::getInstance(); $auth->authenticate($adapter); $this->assertTrue($auth->hasIdentity()); } }
46.
© All rights
reserved. Zend Technologies, Inc. Authenticating and dispatching class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { // ... public function testAdminUserCanAccessAdmin() { $this->loginUser('admin'); $this->dispatch('/example/admin'); $this->assertQuery('div#content.admin'); } class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { // ... public function testAdminUserCanAccessAdmin() { $this->loginUser('admin'); $this->dispatch('/example/admin'); $this->assertQuery('div#content.admin'); }
47.
© All rights
reserved. Zend Technologies, Inc. Testing pages dependent on prior actions ● The Problem: Some actions are dependent on others; e.g., retrieving a page with content highlighted based on a search string. ● The Solution: Dispatch twice, resetting the request and response between calls.
48.
© All rights
reserved. Zend Technologies, Inc. Testing pages dependent on prior actions class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { // ... public function testHighlightedTextAfterSearch() { $this->getRequest()->setQuery( 'search', 'foobar'); $this->dispatch('/search'); $this->resetRequest(); $this->resetResponse(); $this->dispatch('/example/page'); $this->assertQueryContains( 'span.highlight', 'foobar'); } class ExampleControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { // ... public function testHighlightedTextAfterSearch() { $this->getRequest()->setQuery( 'search', 'foobar'); $this->dispatch('/search'); $this->resetRequest(); $this->resetResponse(); $this->dispatch('/example/page'); $this->assertQueryContains( 'span.highlight', 'foobar'); }
49.
49 © All
rights reserved. Zend Technologies, Inc. Conclusions
50.
© All rights
reserved. Zend Technologies, Inc. Test Always! ● Unit test your models, service layers, etc. ● Do functional/acceptance testing to test workflows, page structure, etc.
51.
© All rights
reserved. Zend Technologies, Inc. Zend Framework Training & Certification ● Zend Framework: Fundamentals This course combines teaching ZF with the introduction of the Model-View-Controller (MVC) design pattern, to ensure you learn current best practices in PHP development. Next Class: August 16, 17, 18, 19 20, 23, 24, 25 & 26 from 9am-11am Pacific
52.
© All rights
reserved. Zend Technologies, Inc. Zend Framework Training & Certification ● Zend Framework: Advanced The Zend Framework: Advanced course is designed to teach PHP developers already working with Zend Framework how to apply best practices when building and configuring applications for scalability, interactivity, and high performance. Next Class: Sept. 7, 8, 9, 10, 13, 14, 15, 16 & 17 from 8:30am-10:30am Pacific
53.
© All rights
reserved. Zend Technologies, Inc. Zend Framework Training & Certification ● Test Prep: Zend Framework Certification The Test Prep: Zend Framework Certification course prepares experienced developers who design and build PHP applications using ZF for the challenge of passing the certification exam and achieving the status of Zend Certified Engineer in Zend Framework(ZCE-ZF). ● Free Study Guide http://www.zend.com/en/download/173
54.
© All rights
reserved. Zend Technologies, Inc. ZendCon 2010! ● 1—4 November 2010 ● http://www.zendcon.com/
Baixar agora