log > Unitテスト書いてる

Unitテスト書いてる

CodeceptionでUnitテストを書いてる。

最初はBDDスタイルで書こうとspecifyとverifyを入れて、

private $foo;
//...
$this->specify("hogehoge test", function () {
	$this->foo = 'foo';
	verify($this->getFoo())->equals('foo');
});

上記のように書いていたのだが、なぜか今日になってテストがフリーズするようになってしまった。原因がわからないままspecifyとverifyを除いたら通るようになった。エラーログにはメモリ枯渇だと書かれていたのでいろいろ調べたら、どちらかに使われているライブラリがdeepcopy失敗していたようだった。

とにかくBDDスタイルだとテストも通らないし困るのでTDDスタイルで書き直した。テストも通るようになった。

スタブはCodeceptionのものを使っていて、今のところ問題はない。が、面倒なことをやるようならMockeryとかAspectMockとか使うと思う。


それにしても、Unitテストを書いてわかったのは、異常系のこと考えてないことと、Testableなコードになってなかったことだ。少なくとも、staticなメソッドの中でインスタンス生成(というかnew)しちゃだめだと思った。テスト書くときにDIするように変えたけど、まだあちらこちらにある。

引き続きユニットテストを書いていきたい。