質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

PHPUnit

PHPUnitは、PHP向けのユニット・テスト向けフレームワークで、手動では手間のかかるテスト作業を自動化し、繰り返し実行することが可能です。

Q&A

解決済

1回答

1879閲覧

vim + quickrun.vimでCakePHPのユニットテストをしたい

takets

総合スコア43

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

PHPUnit

PHPUnitは、PHP向けのユニット・テスト向けフレームワークで、手動では手間のかかるテスト作業を自動化し、繰り返し実行することが可能です。

0グッド

0クリップ

投稿2016/12/26 22:30

編集2016/12/28 14:13

###前提・実現したいこと
VagrantのCentOS6環境下で、CakePHP(2.7)でvim(8.0)のquickrun.vimプラグインを使って、気軽にユニットテストを実行できるようにしたい。

前提として、CakePHPが提供しているユニットテスト機能を使うことは禁止されており、プロジェクトディレクトリとは別の場所にテスト用のファイル群やPHPUnitを隔離して配置し、CakePHPのコードを読みに行くだけにしたい(DBへのアクセスはリードのみ)。

###発生している問題
CakePHP(Webフレームワークの多く)はwebroot/index.phpを叩くことでルーティングされて実行内容が決まるため、特定のコントローラやモデルだけで単体テストができない。

###試したこと
PHPUnitのテストコードsetUp()メソッドに、モデルをインスタンスとしてデータの読み書きを試そうとした(PHPUnitの内部ではCakephpの文法が使えないため失敗)

Codeception+PhantomJSでテストするようにした(テストできるが遅い。1機能のテストをするには大げさ)

上記のような条件において、CakePHPでユニットテストをする方法、あるいは設定がございましたらご教授ください。

###追記・実行したコマンド
phpunitのコマンドはcodeceptionで行っているため、以下のコマンドになります

vendor/bin/codecept run unit AaaTest

また、vimはquickrun.vimプラグインを使っているため、<leader>rで実行しているためコマンドはございませんが、設定は以下となります。

let g:quickrun_config = get(g:, 'quickrun_config', {})
let g:quickrun_config._ = {
\ 'runner' : 'vimproc',
\ 'runner/vimproc/updatetime' : 60,
\ 'outputter' : 'error',
\ 'outputter/error/error' : 'quickfix',
\ 'outputter/error/success' : 'buffer',
\ 'outputter/buffer/split' : ':rightbelow 8sp',
\ 'outputter/buffer/into' : 1,
\ 'outputter/buffer/close_on_empty' : 1,
\ "ruby/utf8" : {
\ "cmdopt" : "-Ku",
\ "type" : "ruby"
\ },
\ }

augroup QuickRunPHPUnit
autocmd!
autocmd BufWinEnter,BufNewFile *Test.php set filetype=phpunit.php
augroup END

let g:quickrun_config['phpunit.php'] = {}
let g:quickrun_config['phpunit.php']['outputter'] = 'phpunit'
let g:quickrun_config['phpunit.php']['command'] = '/varant/testingDir/vendor/bin/phpunit'
let g:quickrun_config['phpunit.php']['exec'] = '%c %o %s'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

raa0121

2016/12/27 04:08

コマンドで phpunit のテストを実行している際のコマンドを記載していただけないでしょうか。コマンドでの実行方法が分かれば、QuickRunに落とし込みやすくなります。
guest

回答1

0

ベストアンサー

phpunitのコマンドはcodeceptionで行っているため、以下のコマンドになります

vendor/bin/codecept run unit AaaTest

これを実行するように設定すれば動くと思います。

vim

1let g:quickrun_config['phpunit.php'] = {} 2let g:quickrun_config['phpunit.php']['exec'] = 'vendor/bin/codecept run unit %s'

ただし、これは相対パスを実行しているので、カレントディレクトリに注意してください。Vim 内部にもカレントディレクトリの概念が存在し、:cd コマンドでシェルと同じように変更できます。

投稿2016/12/31 05:02

thinca

総合スコア1864

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takets

2016/12/31 06:14

ありがとうございます。これでcodeceptionを使ったquickrunができます。
thinca

2016/12/31 07:17

解決した場合は「解決済み」にしてくださいー。
takets

2016/12/31 16:31

失礼いたしました。解決済みにいたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問