Slide 1

Slide 1 text

ࣗಈςετͷา໨ 1)1ษڧձ લా࿨ਓ

Slide 2

Slide 2 text

ࣗݾ঺հ w લా࿨ਓ w !DIJSPSVYYYY w 3099

Slide 3

Slide 3 text

࠷ॳʹ w ࣗಈςετͬͯ೉͘͠ͳ͍Ͱ͔͢ʁ w BTTFSU&RVBMT Έ͍ͨͳαϯϓϧ͔͠ͳ͍ w ͔ͦ͜ΒϓϩμΫγϣϯͷίʔυॻ͘ͷແཧ͘ͳ͍ʁ

Slide 4

Slide 4 text

࠷ॳʹ w ๻΋͍ͬͺ͍ඍົͳςετίʔυॻ͍ͨ w ඍົͳίʔυ΋͍ͬͺ͍ݟ͖ͯͨ w ͋ΕɺΈΜͳಉ͡Α͏ʹϋϚ͍ͬͯΔͷͰ͸ʁ w ؕΓ͕ͪͳύλʔϯͱɺͲ͏͢Ε͹͍͍͔Λ঺հ͢ΔΑ w ݸਓతͳࣄ৘ʹΑΓ1)1ͩΑ

Slide 5

Slide 5 text

ಉ͡ϩδοΫ Ξϯνύλʔϯ

Slide 6

Slide 6 text

ಉ͡ϩδοΫ function sum(array $array) { $sum = 0; foreach ($array as $value) { $sum += $value; } return $sum; } public function testSum() { $input = [1, 2, 3]; $expected = 0; foreach ($input as $value) { $expected += $value; } $this->assertEquals($expected, sum($input)); }

Slide 7

Slide 7 text

ಉ͡ϩδοΫ function sum(array $array) { $sum = 0; foreach ($array as $value) { $sum += $value; } return $sum; } public function testSum() { $input = [1, 2, 3]; $expected = 0; foreach ($input as $value) { $expected += $value; } $this->assertEquals($expected, sum($input)); }

Slide 8

Slide 8 text

ಉ͡ϩδοΫ w ࣮૷ͱςετ͕ಉ͡ϩδοΫ w ͦ΋ͦ΋ςετʹͳͬͯͳ͍ w ಉ͡ܭࢉͨ͠ΒͦΒಉ݁͡ՌʹͳΔΑͶ w খֶߍͷͱ͖ʹͯͨ͠ݕࢉ΋ҧ͏ܭࢉํ๏Ͱ΍ͬͯͨ͸ͣ ‎ ܾΊଧͪςετ͕༗ޮ

Slide 9

Slide 9 text

ܾΊଧͪςετ public function testSum() { $this->assertEquals(6, sum([1, 2, 3])); $this->assertEquals(2, sum([2])); $this->assertEquals(0, sum([0, 0, 0])); $this->assertEquals(0, sum([])); }

Slide 10

Slide 10 text

σʔλϓϩόΠμ public function testSum(array $input, bool $expected) { $this->assertEquals($expected, sum($input)); } public function dataProvider(): array { return [ ['input' => [1, 2, 3], 'expected' => 6], ['input' => [2], 'expected' => 2], ['input' => [0, 0, 0], 'expected' => 0], ['input' => [], 'expected' => 0], ]; }

Slide 11

Slide 11 text

σʔλϓϩόΠμ ͷ࢖͍·Θ͠ Ξϯνύλʔϯ

Slide 12

Slide 12 text

σʔλϓϩόΠμͷ࢖͍·Θ͠ public function testGetQuestionsWithoutDate(array $input, array $expected) { $expected['created_at'] = null; $expected['updated_at'] = null; $expected['deleted_at'] = null; $service = new QuestionService(); $this->assertEquals($expected, $service->getQuestionsWithoutDate($input)); }

Slide 13

Slide 13 text

σʔλϓϩόΠμͷ࢖͍·Θ͠ public function testGetQuestionsWithoutDate(array $input, array $expected) { $expected['created_at'] = null; $expected['updated_at'] = null; $expected['deleted_at'] = null; $service = new QuestionService(); $this->assertEquals($expected, $service->getQuestionsWithoutDate($input)); }

Slide 14

Slide 14 text

σʔλϓϩόΠμͷ࢖͍·Θ͠ w ଞͷςετͰ࢖༻͍ͯ͠ΔσʔλϓϩόΠμΛແཧʹྲྀ༻ w ड͚औͬͨ஋Λߋ৽ͨ͠ΓɺҰ෦Λ࢖Θͳ͔ͬͨΓ w ΋͸΍σόοΨ͕ͳ͍ͱಡΊͳ͍ w ίʔυΛ௥͏࣌ʹσʔλϓϩόΠμ͔ΒԿΛ౉͞Ε͔ͨΛهԱ͠ ͯɺͦͷهԱͷ஋Λߋ৽͠ͳ͍ͱ͍͚ͳ͍ ‎ ςετσʔλϓϩόΠμ͕͓͢͢Ί

Slide 15

Slide 15 text

ςετσʔλϓϩόΠμ public function getQuestionDataProvider(): array { return [ 'input' => [ 'title' => 'question title', ], 'expected' => [ 'title' => 'question title', 'author' => ‘default author', 'created_at' => '2019-02-03 00:00:00', 'updated_at' => '2019-02-03 00:00:00', 'deleted_at' => null, ], ]; } public function getQuestionWithoutDateDataProvider(): array { return [ 'input' => [ 'title' => 'question title', ], 'expected' => [ 'title' => 'question title', 'author' => ‘default author', ], ]; }

Slide 16

Slide 16 text

ςετσʔλϓϩόΠμ public function testGetQuestions(array $input, array $expected) { $service = new QuestionService(); $this->assertEquals($expected, $service->getQuestions($input)); } public function testGetQuestionsWithoutDate(array $input, array $expected) { $service = new QuestionService(); $this->assertEquals($expected, $service->getQuestionsWithoutDate($input)); }

Slide 17

Slide 17 text

ςετσʔλϓϩόΠμ public function getQuestionDataProvider(): array { return [ 'input' => [ 'title' => 'question title', ], 'expected' => $this->defaultQuestionAttributes(), ]; } public function defaultQuestionAttributes(array $overrides = []) { $default = [ 'title' => 'question title', 'author' => 'default author', 'created_at' => '2019-02-03 00:00:00', 'updated_at' => '2019-02-03 00:00:00', 'deleted_at' => null, ]; return array_merge($default, $overrides); }

Slide 18

Slide 18 text

ϥϯμϜ஋ͷݕূ Ξϯνύλʔϯ

Slide 19

Slide 19 text

ϥϯμϜ஋ͷݕূ public function testDelete() { $question1 = factory(Question::class)->create(); $question2 = factory(Question::class)->create(); $service = new QuestionService(); $service->delete($question1); $this->assertDatabaseMissing(['title' => $question1->title]); $this->assertDatabaseHas(['title' => $question2->title]); }

Slide 20

Slide 20 text

ϥϯμϜ஋ͷݕূ w ϥϯμϜʹੜ੒͞Εͨ஋Ͱൺֱɾ֬ೝ͢Δ w ϥϯμϜ஋ʹΑͬͯ͸མͪΔ৔߹͕͋Δ w ςετΨνϟͷൃੜ w ͦ΋ͦ΋ͳͥϥϯμϜ஋Λ࢖͏ͷ͔Λߟ͑Α͏ ‎ ϥϯμϜ஋Λൺֱɾ֬ೝ͠ͳ͍

Slide 21

Slide 21 text

ϥϯμϜ஋ͷݕূ public function testDelete() { $question1 = factory(Question::class)->create(['title' => 'ফ͑Δ']); $question2 = factory(Question::class)->create(['title' => '࢒Δ']); $service = new QuestionService(); $service->delete($question1); $this->assertDatabaseMissing(['title' => 'ফ͑Δ']); $this->assertDatabaseHas(['title' => '࢒Δ']); }

Slide 22

Slide 22 text

·ͱΊ

Slide 23

Slide 23 text

·ͱΊ w ܾΊଧͪςετΛ͠Α͏ w ςετσʔλϓϩόΠμ w ϥϯμϜ஋Ͱൺֱɾ֬ೝΛ͠ͳ͍