CodeIgniter×PHPUnitでテストコードを書く

CodeIgniter×PHPUnitでテストコードを書く

こんにちは、6月に入社した原田です。
元々業務系アプリの開発をしていたので、初めてWebサービスに携わることになりました。今まで触ったことのない技術や、既存システムについて絶賛勉強中です。
そして地元でもある湘南地域で働けることになり、日々幸せを感じております!

さてブログを書くということで何について書くか悩みましたが、技術的に学んだことのアウトプットとして書いていこうと思います。
そして今回は「Coodeigniter×PHPUnitでテストコードを書く」です。
前職ではテストコードを書くということの経験が無かったので「テストコード」についての初歩的なところを、業務でも使うことあるフレームワーク「Codeigniter」でやってみました。

PHPUnitのインストール

Codeigniterはインストール済みの状態でPHPUnitをインストールするところから書いていきます。

$ /cd プロジェクト名
$ composer require phpunit/phpunit

PHPのバージョンを確認して必要に応じてPHPUnitのバージョンを指定してください。

PHPUnitがインストールできたことを確認します。

$ /vendor/bin/phpunit --version

ci-phpunit-testのインストール

こちらはCodeigniterでPHPUnitを使えるようにするためのツールです。

$ composer require kenjis/ci-phpunit-test
$ php vendor/kenjis/ci-phpunit-test/install.php

サンプルテストを試してみます。

$ cd application/tests/
$ ../../vendor/bin/phpunit
PHPUnit 5.7.0 by Sebastian Bergmann and contributors.

Error: No code coverage driver is available

… 3 / 3
(100%)

Time: 304 ms, Memory: 6.00MB
OK (3 tests, 3 assertions)

OKが出力され正常に動いてること確認できました!

テストコードを書く

単純な加算を行うaddメソッドを記載したSampleクラスに対してのテストコードを書いていきます。
(application/libraries/Sample.php)

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Sample
{
    public function add($num1, $num2) {
        $ans = $num1 + $num2;
        return $ans;
    }
}

テストケースクラスを作成します。
(application/tests/libraries/Sample_test.php)

<?php

class Sample_test extends TestCase
{
    public function setUp()
    {
        $this->resetInstance();
        $this->CI->load->library('sample');
        $this->obj = $this->CI->sample;
    }

    public function test_add()
    {
        $result = $this->obj->add(10, 2);
        $this->assertEquals(12, $result);
    }

}

テストケースクラスはci-phpunit-testのクラス「TestCase」を継承します。
クラス名は「<テスト対象クラス名>_test」にしましょう。

実行してみます。

$ ../../vendor/bin/phpunit libraries/Sample_test.php
PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
・・・
OK (1 test, 1 assertion)

無事通りました!

今回はここまで。簡単なテストしか実施していませんが、PHPUnitとci-phpunit-testを使ってどんなテストができるかこれから試していきたいです。

エンジョイワークスでは一緒に働くエンジニアを募集しております!
採用情報はこちらWantedlyも覗いてみてください!

一覧へ戻る

株式会社 エンジョイワークス

令和4年度 国土交通省PPP協定パートナー
宅地建物取引業 [神奈川県知事(3)第28062号]
一級建築士事務所 [神奈川県知事登録 第16506号]
不動産特定共同事業者 [金融庁長官・国土交通大臣 第114号]
(第1号、2号、3号、4号に掲げる事業を行う)
第二種金融商品取引業 [関東財務局長(金商)第3148号]
住宅宿泊管理業者 [国土交通大臣(01)第F00604号]
(関連会社グッドネイバーズにて取得)

ファンド出資時の注意事項

  • 出資に際しご負担頂くのは出資金額のみで、それ以上の支払は発生しません。出資金から年度毎に管理報酬を、その他銀行手数料等をご負担頂きます。
  • 事業の状況により、利益の分配が行われない可能性及び返還される出資金が元本を割る可能性があります。詳しくはハロー!RENOVATIONの「ファンド情報」から内容をご確認ください。
  • 不動産特定共同事業のファンドにおいて、株式会社エンジョイワークスは、当事者として不動産特定共同事業法第2条第3項第2号の匿名組合型契約を出資者と締結します。