これは CakePHP Advent Calendar 2017 の 22 日目の記事です。

プラグインのテスト

今回は CakePHP 2 のプラグインを開発する際に便利な、Travis CI 上でテストを実行するためのスクリプト「FriendsOfCake/travis」を紹介します。

CakePHP にはプラグインの機構が搭載されていますが、公式の Cookbook にも基本的な機能の説明がなされているのみで特にテストの手法については具体的な記述がありません。基本的には標準的なアプリケーションと同じようにしてテストを作成することが可能ですが、プラグインのリポジトリー単独でテストを実行することができるように設計されていないためテストの呼び出しにやや難があります。拙作の CakePHP 2 向けプラグイン「lampager-cakephp2」では当初、テストにのみ用いられるコードをプラグイン本体にも含めていましたが、読み込むアプリケーションとの競合や、プラグイン自体のメンテナビリティーの問題があったため別の手法を取ることにしました。

プラグインの作成 – 2.x(CakePHP 2.x Cookbook)

日頃からコードをお書きになるみなさんなら、三度の飯よりテストですよね?

今回は Chrome 拡張「TweetDeck Accounts Switcher」を Travis CI/AppVeyor 上でテストしてみました。

用意するもの

  • GitHub アカウント
  • Travis CI アカウント
  • Google Chrome
  • Node.js

環境構築

はじめに macOS で試してみます。

Node.js でドライバーを読み込んで……。

今話題の PHP 7、非推奨要素などがまるっと削除されてすっきり速くなったそうなので試してみました。
実際に現在ご覧のページも執筆時点最新の PHP 7.0.0RC1 で表示されています。そんな時代もありました。

環境

phpenv でバージョン切り替えが可能な環境で実験してみます。

項目名称
OSArch Linux(Linux 4.1.6)
Apache2.4.16
phpenvrbenv 0.4.0-153-g3b6faa8
php-buildv0.11.0dev

今までバグをたくさん放置したままレンタルサーバーで抱えていた RecoTw Explorer(詳細は GitHub へ)をいろいろ変更してリニューアルしたので告知ついでに。

TypeScript で書き直した

今まで全体が JavaScript で書かれていましたが、クロージャを駆使しながらクラスのように記述する書き方や、型制約のない緩い言語仕様に嫌気が差したので、今回初めて altJS で書くことにし、TypeScript を採用してみました。 C# 好きにはたまらない構文(設計者が同じらしいですね)、静的な型付けによるコンパイル時のエラー検出と強力な入力補完、ECMAScript の先進的機能の先取り実装(アロー関数など)、挙げたらキリがないほど導入のメリットは大きく、今まで書いた中では C# と同じくらいの感動を覚えました。