30. • Lista de tarefas
• Título
Saturday, June 23, 2012
31. 1 <?php
2 class TaskTest extends PHPUnit_Framework_TestCase
3 {
4 public function testTitle()
5 {
6 $task = new SfConTask;
7 $title = 'Teste';
8 $task->setTitle($title);
9 $this->assertEquals($title, $task->getTitle());
10 $this->assertEquals($title, (string) $task);
11 }
12 }
Saturday, June 23, 2012
32. 1 PHPUnit 3.6.10 by Sebastian Bergmann.
2
3
4 Fatal error: Class 'SfConTask' not found in /Users/
augustopascutti/Desktop/tdd/TaskTest.php on line 6
Saturday, June 23, 2012
33. 1 <?php
2 namespace SfCon;
3
4 class Task
5 {
6 protected $title;
7
8 public function setTitle($string)
9 {
10 $this->title = $string;
11 return $this;
12 }
13
14 public function getTitle()
15 {
16 return $this->title;
17 }
18
19 public function __toString()
20 {
21 return (string) $this->getTitle();
22 }
23 }
Saturday, June 23, 2012
34. 1 PHPUnit 3.6.10 by Sebastian Bergmann.
2
3 .
4
5 Time: 0 seconds, Memory: 2.75Mb
6
7 OK (1 test, 2 assertions)
Saturday, June 23, 2012
35. • Lista de tarefas
• Título
• ID
Saturday, June 23, 2012
36. 1 <?php
2 require 'SfCon/Task.php';
4 class TaskTest extends PHPUnit_Framework_TestCase
5 {
6 // ...
7 public function testId()
8 {
9 $task = new SfConTask();
10 $id = 1;
11 $task->setId($id);
12 $this->assertEquals($id, $task->getId());
13 }
14 }
Saturday, June 23, 2012
37. 1 PHPUnit 3.6.10 by Sebastian Bergmann.
2
3 .
4 Fatal error: Call to undefined method SfConTask::setId
() in /Users/augustopascutti/Desktop/tdd/TaskTest.php on
line 19
Saturday, June 23, 2012
38. 1 <?php
2 require 'SfCon/Task.php';
3
4 class TaskTest extends PHPUnit_Framework_TestCase
5 {
6 // ...
7 public function testId()
8 {
9 $task = new SfConTask();
10 $id = 1;
11 $task->setId($id);
12 $this->assertEquals($id, $task->getId());
13 }
14 }
Saturday, June 23, 2012
39. • Lista de tarefas
• Título
• ID
• Completa?
Saturday, June 23, 2012
40. 1 <?php
2 require 'SfCon/Task.php';
3
4 class TaskTest extends PHPUnit_Framework_TestCase
5 {
6 // ...
7 public function testDone()
8 {
9 $task = new SfConTask();
10 $this->assertFalse($task->isDone());
11 $task->setDone(); // Default: true
12 $this->assertTrue($task->isDone());
13 $task->setDone(false);
14 $this->assertFalse($task->isDone());
15 }
16 }
Saturday, June 23, 2012
41. 1 PHPUnit 3.6.10 by Sebastian Bergmann.
2
3 ..
4 Fatal error: Call to undefined method SfCon
Task::isDone() in /Users/augustopascutti/Desktop/tdd/
TaskTest.php on line 26
Saturday, June 23, 2012
42. 1 <?php
2 namespace SfCon;
3
4 class Task
5 {
6 // ...
7 protected $done = false;
8
9 // ...
10 public function setDone($bool=true)
11 {
12 $this->done = (boolean) $bool;
13 return $this;
14 }
15
16 public function isDone()
17 {
18 return $this->done;
19 }
20 }
Saturday, June 23, 2012
43. 1 PHPUnit 3.6.10 by Sebastian Bergmann.
2
3 ...
4
5 Time: 0 seconds, Memory: 2.75Mb
6
7 OK (3 tests, 6 assertions)
Saturday, June 23, 2012
44. • Lista de tarefas
• Título
• ID
• Completa?
• Salvar tarefa
Saturday, June 23, 2012
45. 1 <?php
2 require 'SfCon/Task.php';
3
4 class TaskTest extends PHPUnit_Framework_TestCase
5 {
6 // ...
7 public function testInsert()
8 {
9 $pdo = new Pdo('sqlite::memory:');
10 $pdo->exec('CREATE TABLE tasks (
11 id INTEGER PRIMARY KEY,
12 title TEXT,
13 done INTEGER
14 )');
15 $task = new SfConTask($pdo);
16 $expectId = 1;
17 $task->setTitle('Test');
18 $task->insert(); // Insert defines ID
19 $this->assertEquals($expectId, $task->getId());
20 }
21 }
Saturday, June 23, 2012
47. 1 PHPUnit 3.6.10 by Sebastian Bergmann.
2
3 ....
4
5 Time: 0 seconds, Memory: 2.75Mb
6
7 OK (4 tests, 9 assertions)
Saturday, June 23, 2012
48. 1 PHPUnit 3.6.10 by Sebastian Bergmann.
2
3 Task
4 [x] Title
5 [x] Id
6 [x] Done
7 [x] Insert
Saturday, June 23, 2012
49. 1 <?php
2 require 'SfCon/Task.php';
3
4 class TaskTest extends PHPUnit_Framework_TestCase
5 {
6 public function testSetterGetterForTitle()
7 {
8 // ...
9 }
10
11 public function testSetterGetterForId()
12 {
13 // ...
14 }
15
16 public function testSetterGetterForDone()
17 {
18 // ...
19 }
20 }
Saturday, June 23, 2012
50. 1 PHPUnit 3.6.10 by Sebastian Bergmann.
2
3 Task
4 [x] Setter getter for title
5 [x] Setter getter for id
6 [x] Setter getter for done
7 [x] Insert
Saturday, June 23, 2012
65. 1 <?php
2 require 'SfCon/Task.php';
3
4 class TaskTest extends PHPUnit_Framework_TestCase
5 {
6 public function testInsert()
7 {
8 // ...
9 $mockIns->expects($this->once())
10 ->method('execute')
11 ->will($this->returnValue(true));
12 // ...
13 }
14 }
Saturday, June 23, 2012
66. 1 <?php
2 require 'SfCon/Task.php';
3
4 class TaskTest extends PHPUnit_Framework_TestCase
5 {
6 public function testInsert()
7 {
8 // ...
9 $this->pdo->expects($this->once())
10 ->method('lastInsertId')
11 ->will($this->returnValue(1));
12
13 $task = new SfConTask($this->pdo);
14 $task->setTitle($title);
15 $task->insert();
16 $this->assertEquals($expectId, $task->getId());
17 }
18 }
Saturday, June 23, 2012
67. 1 PHPUnit 3.6.10 by Sebastian Bergmann.
2
3 ...............
4
5 Time: 0 seconds, Memory: 3.25Mb
6
7 OK (15 tests, 45 assertions)
Saturday, June 23, 2012
68. • Lista de tarefas • Cobrir variações
• Título • Mocks / Stubs
• ID •
tas?
Bugs regressivos
u n
• Completa?
e rg
• Salvar tarefa
p
Saturday, June 23, 2012