タグ

phpunitに関するk-holyのブックマーク (25)

  • モックライブラリ・Prophecyの使い方まとめ - Qiita

    Prophecyとは phpspec/prophecy PHPUnitと組み合わせて使えるモックライブラリ。 元はphpspecの一部として開発されたもので、phpspecと組み合わせなくても単独で使うことができる。 PHPUnit 4.5からパッケージに同梱されるようになった。PHPUnitの新しいバージョンを使っていれば、composer.jsonに加えなくても使うことができる。 テストダブルとは ユニットテストを書くときに、テスト対象の依存の代替として使うオブジェクトをテストダブルと言う。目的はいくつかある。 依存オブジェクトの準備を手抜きする。100行の準備をしないとテストが書けないとしたらユニットテストが読みにくくなってしまう。 実行しづらいメソッドを差し替える。外部へ通信してしまうもの、I/Oが発生するもの、すごーくたまにしか失敗しないものなどを強制的に変更したいとき。 メソッ

    モックライブラリ・Prophecyの使い方まとめ - Qiita
    k-holy
    k-holy 2018/07/02
    PHPUnit組み込みのモッキングライブラリ。今更Phakeの書き方覚えるくらいなら、こっち覚えた方が良いかな。流行り廃りでテストコード書き直すの大変なので定着してくれると嬉しい。
  • PHPUnitとPHPのバージョン対応表 – Shimabox Blog

    そこにペチパー(PHPer)が100人いたら97人はPHPUnitでテストを書く。 と言われている位(適当です)、PHPでは珍しくデファクトとなっているPHPUnit。 なにそうなのか!?と、いざ導入しようとしてwget https://phar.phpunit.de/phpunit.pharから入れたらPHPのバージョンが合っていなくて挫けそうになった経験。あると思います。 何故なら、PHPUnitの最新バージョンはPHP5.6PHP 7以上を求めているからです。 ※ 上記のwget 〜 では最新のPHPUnitが取得されます そして恐らく、みんながみんなPHPのバージョンは最新では無いはずです。 (一番マシなのが5.5系でヘタすれば未だに5.3系なんてとこも??5.2系使っていたら頭おかしい) え、じゃあ僕は5.5系使っているんだけど、どうしたらいいの?私は5.4系よ、どうしたらいいの

    PHPUnitとPHPのバージョン対応表 – Shimabox Blog
  • 数字を0埋めした文字列をUnitTestで確認するときの注意点 - Qiita

    このような値を比較したい場合は気をつけましょうという話です。 単純にassertEqualsすると、文字列の長さが違っても常にGreenになってしまい、コードの不具合に気が付かない可能性があるからです。 値の例: 値A: '0000000000123' 値B: '000000123' どっちも文字列。 これらをこのようなアサーションで確認すると、なんと・・・結果がGreenになります。

    数字を0埋めした文字列をUnitTestで確認するときの注意点 - Qiita
    k-holy
    k-holy 2017/06/13
    まじか…今まで気付いてなかったわ。文字列でも==と変わらんレベルの比較しかしてくれないなら、assertEquals()の存在意義は皆無な気が…。
  • PHP5.3 対応でも PHPUnit は 6 スタイルの記述へ移行しよう - Qiita

    PHPUnit は 6.0 で PHP7.0 未満との互換性を切り捨てました。それとともに、Zend1 式の名前空間を捨てて、PHP5.3 で導入された名前空間に移行しました。 <?php use PHPUnit\Framework\TestCase; class MyTestCase extends TestCase { } PHPUnit >= 6.0 にはもう PHPUnit_Framework_TestCase はありません。use PHPUnit\Framework\TestCase; が今後のスタイルです。 でも、弊社まだ番に 5.x がいるんですよ、とか、自分の公開しているライブラリ/フレームワークには 5.x 互換性の維持が必要で、とか、完全に 7 になりきれない事情がいろいろありますよね。高い方に合わせると前のやつが動かない、低い方に合わせておけばどうにか両バージョン動

    PHP5.3 対応でも PHPUnit は 6 スタイルの記述へ移行しよう - Qiita
    k-holy
    k-holy 2017/05/30
    PHPUnit_Framework_TestCaseは全部書き換えなきゃいけないと。
  • PHPUnitの使い方まとめ2016 - Qiita

    前置き 地味にこの記事が読まれ続けているみたいなのですが、内容がよい加減に古くて心苦しいので、もうちょっと現代的な内容にマイグレーションしたものを投稿しようと思います。当時と違ってQiitaにもよい記事増えているのに今更感あるのですが、あの記事に辿りついてしまった人のため……という感じで書いておきます。 大前提 PHPUnitを使ったからといって、どんなソースコードもテストできる訳ではありません。テストをし易いようにクラスを設計している必要があります。また、そのように設計していてもUnitテストに入れることの出来ない箇所は出てきます。Unitテストに入れることの出来ない箇所は出来ないと割り切らなければなりません。むしろ、どれだけのコードをUnitテストに入れることが出来るか? というのが設計者の腕の見せどころになるでしょう。極論を言うと 「どんなクラスでも疎結合に実装していなければならない

    PHPUnitの使い方まとめ2016 - Qiita
  • PHPUnitの便利な機能を紹介する - はむはむエンジニアぶろぐ

    この記事はPHP Advent Calendar 2015 - Qiita 14日目の記事です。 担当は@secret_hamuhamu です。 みなさんは、PHPのテスティングツールに何をお使いでしょうか? Behat?PHPSpec?PHPUnit? 今日は、PHPUnitの便利な機能をいくつか紹介したいと思います。 なお、PHPUnitのバージョンは2015年12月14日現在時点で、最新安定版の 5.1 とします。 echoやprintなどの出力をテストする echoやprintといった出力を伴うものをテストすることが出来ます。 <?php class Hoge { public function output() { echo 'hoge'; } public function output2() { echo 'hoXX'; } } class HogeTest extends

    PHPUnitの便利な機能を紹介する - はむはむエンジニアぶろぐ
    k-holy
    k-holy 2015/12/14
    expectOutputString(),expectOutputRegex()…いつの間にこんなのが…markTestIncomplete()は環境に依存せざるを得ない内容のテストで使えそう
  • composer testでQAツールの実行 - Qiita

    概要 phpunit, phpcs, phpmdをcomposer testコマンドで簡単に実行できるようにします。 準備 ※ 現在のBEAR.Sundayのアプリケーションスケルトンはこの準備は完了していています。 composer.jsonに以下のエントリーを記述します。 "require-dev": { "phpunit/phpunit": "~4.8", "squizlabs/php_codesniffer": "~2.3", "phpmd/phpmd": "~2.3" }, "scripts" :{ "test": [ "php vendor/phpmd/phpmd/src/bin/phpmd src text ./phpmd.xml", "php vendor/squizlabs/php_codesniffer/scripts/phpcs", "php vendor/phpun

    composer testでQAツールの実行 - Qiita
    k-holy
    k-holy 2015/12/03
    こんな機能あったんだ
  • [PHP] echo などの標準出力が含まれるメソッドをテストする - Qiita

    <?php class Japan{ public function getCapital(){ echo '<div id="capital">'; echo '埼玉県'; echo '</div>'; } } getCapital() は何も return してくれませんので、代わりに標準出力された内容をテストします。標準出力される内容を取得できる ob_start() と ob_get_clean() を使います。これにより、標準出力される内容を変数に格納できますのでテストを行えるようになります。 <?php require_once 'Japan.php'; class JapanTest extends PHPUnit_Framework_TestCase{ public function testGetCapitalOutputsExpectedHtml(){ $japan =

    [PHP] echo などの標準出力が含まれるメソッドをテストする - Qiita
    k-holy
    k-holy 2015/11/12
    expectOutputString()が役に立った。今のバージョンだとob_start()したらrisky testとか言われてパスされるので…
  • 短気なプログラマのためのPHPUnitクックブック

    「今までテストを書いたことがないから、そろそろテストを書かなくては・・・」という、PHPUnitもテストのこともまだ知らないプログラマにとって、一番最初に欲しいのは「何から始めたらよいのか」を知るためのガイドです。 書は、PHPUnitを使ったテストの書き方を、短時間で知るための小冊子です。これだけ読めば、PHPUnitでテストを書いていけるようになります。 書が特徴的なのは、ユニットテストの形式的な書き方だけを単純に説明したではないということです。書では、PHPUnitによるテストを、オブジェクト指向の原則に沿った、良いコードへリファクタリングしていくための道具、と位置づけています。その流れに沿って、必要最低限の基礎知識や、実際にありそうなサンプルコードで使い方が説明されています。モック(テストダブル)を使ったテスト、フィクスチャを使ったテスト、APIのテストといった対象ごとのP

    短気なプログラマのためのPHPUnitクックブック
  • PHPUnit でよりよくテストを書くために

    The document defines a fib function that recursively calculates Fibonacci numbers and prints the 10th Fibonacci number. It then defines some unit tests for a Calculator class that test the add method by asserting the expected result. Finally, it defines some unit tests for a User class that test validating a user object.Read less

    PHPUnit でよりよくテストを書くために
  • PHPUnit のスタブの will() で使えるメソッド « nia.note

    PHPUnit ユニットテストを書くときに重宝するPHPUnit。でも、以外と詳しく解説したマニュアルというか、リファレンスが無いというのもちょっと悲しい。 (もしかしたらあるのかもしれないです。あんまり深く探してないので←) 公式の日語訳ドキュメントは存在しますが、どうやらすべての説明が網羅されているわけではないようです。 今回はユニットテストを助ける立役者であるモックオブジェクトを使って、メソッド呼び出しを検査を設定する際の各メソッドの戻り値の指定の仕方について、備忘録的に書きます。長い。 基のおさらい まずは基をおさらいしましょう。 とりあえず簡単なテストケースを書きます。テスト対象のクラスがどのような実装かは察してください。 class Sample_Test extends PHPUnit_Framework_TestCase { public function test_

  • Using PHP's built-in web server in your test suites | Schibsted

    expand_moreAbout expand_moreNordic Marketplaces expand_moreNews Media expand_moreGrowth & Investments expand_moreWho we are expand_moreOur brands expand_moreOur locations expand_moreSchibsted Group Management Team expand_morePrivacy expand_moreSchibsted and AI expand_moreSchibsted’s API portal expand_morePublic Policy expand_moreCareer expand_moreJob openings expand_moreFor students expand_moreLif

  • PHPUnitのモックで設計とリファクタが捗る | 48JIGEN *Reloaded*

    class TwitterClient { public function tweet($message) { return true; } } $hoge = new TwitterClient(); $hoge->tweet('大心なう'); // trueが返る class ClientContainerTest extends PHPUnit_Framework_TestCase { public function test_モックを書いてみる() { $hoge = $this->getMock('TwitterClient', array('tweet')); $hoge->expects($this->any()) ->method('tweet') ->will($this->returnValue(true)); $hoge->tweet('大心なう'); // true

    PHPUnitのモックで設計とリファクタが捗る | 48JIGEN *Reloaded*
  • PHPUnit と Selenium2 を使ってブラウザベースの自動テストを実行するための最初の一歩的な何かを発表してきた - 雑文発散(2013-03-09)

    ▼ [PHP][Selenium] PHPUnit と Selenium2 を使ってブラウザベースの自動テストを実行するための最初の一歩的な何かを発表してきた 「(CakePHPとか)PHPのテストについての勉強会」で「PHPUnit + Selenium2 First Step Guide」と題した発表をしてきた。 「First Step Guide」としたのは、これを見ながら「Selenium 環境を整備して、簡単な PHPUnit コードを書く」ところまで実行できるようにしたかったため。 当は発表よりもハンズオン的にやってみたかった話ではある。 発表資料 https://speakerdeck.com/suzuki/phpunit-plus-selenium2-first-step-guide サンプルコード https://github.com/suzuki/phpunit-se

    PHPUnit と Selenium2 を使ってブラウザベースの自動テストを実行するための最初の一歩的な何かを発表してきた - 雑文発散(2013-03-09)
  • 第56回PHP勉強会@関東で PHPUnit について話してきた | Born Too Late

    最近 HTML5 化した Slideshare ですが, エラーで表示できないスライドが多すぎてまともに閲覧できないようです. この記事に掲載している Flash 版は今まで通りの問題なく表示できるのですが... スライドが完成したのが勉強会への出発 15 分前で, 通しで練習することすらできず, 発表はかなりひどいものとなっていまいました. 最低限, スライドの流れぐらいは頭の中に入れて発表すべきですね… スライドだけ見てわかるような作りにはなっていないので, 以下で補足したいと思います. ただし, 序盤は省略し, 論となる書法編とパターン編についてのみとなります. それぞれ該当するスライド番号も付記してありますので, よければご活用ください. 書法編 1: ヘルパーメソッドを使う (25 ~ 30) テスト対象のオブジェクト, それを生成するのに必要な依存オブジェクトの生成には, ヘ

    第56回PHP勉強会@関東で PHPUnit について話してきた | Born Too Late
  • PHPカンファレンス関西2012のLTでモックの使い方について話しました

    2018年1月10日に開催された DCI Tokyo 1 に続き、2018年3月27日に DCI Tokyo 2 が開催されました。今回も James Coplien @jcoplien さんをお招きしてのトークセッションとなりました。会場は 株式会社ヴァル研究所 様に提供していただきました。 セッションは、前回同様 @remore さんと @ganchiku さんによる同時通訳とともに進められました。 今回のテーマはマルチパラダイムデザイン(Multi-Paradigm Design: MPD)の中核を成し、DCI / リーンアーキテクチャ(Lean Architecture)とも深く関係する 共通性/可変性分析 でした。 レポートは @smori1983 が担当させていただきます。 当日の様子は Coplien さんの許可を得て YouTube の DCI Tokyo 公式アカウントに

    PHPカンファレンス関西2012のLTでモックの使い方について話しました
  • PHPUnit テストケースで書き換えた値を復帰する

    PHPUnitのテストケースで書き換えた値の復帰について。 テストケースでテストを記述する際に、スーパーグローバルやクラス変数を書き換えることがあるのですが、これらの値を書き換えたまま、別のテストを実行すると書き換えられた状態でテストが実行されるので、それらの値に依存した処理があるとテストが通らないことがあります。 PHPUnitでは、そういったテストをまたがって影響を及ぼすであろう値の保存、復帰を自動で行なってくれる機能があります。 スーパーグローバル デフォルトでは、各テストメソッドを実行する前に、スーパーグローバル変数($_ENV, $_POST, $_GET, $_COOKIE, $_SERVER, $_FILES, $_REQUEST)の値をが保存されており、テストメソッド終了後にそれらの値がスーパーグローバル変数へ復帰されます。 これらの処理はsetUp()/tearDown(

    k-holy
    k-holy 2012/05/07
    グローバル変数の復旧機能について。思わぬところではまってしまった…
  • Travis CI で PHP 5.4 も CI する, PHPUnit も Behat もやる | Born Too Late

    この記事は PHP5.4 Advent Calendar jp: 2011 の 20 日目です. 前日: 次のプロジェクトPHP 5.4 の採用を提案するための 3 つのポイント (@co3k さん) 翌日: (@kokkekun さん) Travis CI とは Travis CI は, Continuous Integration (CI: 継続的インテグレーション) を実行するクラウド環境です. GitHub に push すると, Travis CI の VM 上に通知が行われ, GitHub リポジトリからのチェックアウトや, ユニットテストの実行が行われます. ユニットテストの実行は成功/失敗の結果により通知が行われ, また, 履歴も Travis CI 上に残ります. 元々は Ruby 専用のサービスだったと思いますが, その後 Clojure や Node.js などを

    Travis CI で PHP 5.4 も CI する, PHPUnit も Behat もやる | Born Too Late
    k-holy
    k-holy 2011/12/20
    クラウドのCIサーバ。GitHubと連携してpush時に自動テスト。複数のPHPバージョンを指定して実行できる
  • PHPUnit のテストを Web から実行する VisualPHPUnit - A Day in Serenity @ kenjis

    PHPUnit の WebUI の VisualPHPUnit というのがありました。 https://github.com/NSinopoli/VisualPHPUnit CodeIgniter はもともとコマンドラインを使わないため、ユーザの中にはコマンドラインに親しんでおらず、ブラウザからテスト結果をみたいという人もいます。この VisualPHPUnit を CIUnit で使ってみます。 上記より、v1.5.1 をダウンロードします。 フォルダ名を「VisualPHPUnit」に変更し、CIUnit をインストールした CodeIgniter のフォルダに移動します。 ci-ja/ application/third_party/CIUnit/ tests/ VisualPHPUnit/PHP から書き込みできるようにパーミッションを設定します。 $ chmod o+w hist

    PHPUnit のテストを Web から実行する VisualPHPUnit - A Day in Serenity @ kenjis
  • headers already sent by (output started at /usr/local/lib/php/PHPUnit/Util/Printer.php:174) - Do You PHP はてブロ

    タイトル長くてすみません。 PHP5.2.10+PHPUnit3.3.17で、setcookie関数を呼び出すクラスをテストすると、何ともつれないメッセージが。。。 $ phpunit AClassTest.php NULL PHPUnit 3.3.17 by Sebastian Bergmann. E..... Time: 3 seconds There was 1 error: 1) testNormal(AClassTest) Cannot modify header information - headers already sent by (output started at /usr/local/lib/php/PHPUnit/Util/Printer.php:96) /path/to/AClass.class.php:118 /path/to/AClass.class.php

    headers already sent by (output started at /usr/local/lib/php/PHPUnit/Util/Printer.php:174) - Do You PHP はてブロ
    k-holy
    k-holy 2011/09/05
    同じく…解消できない…