思考メモ
ちょっと雑に思ったのをこちらに書き写した感じなので、上手くまとまってないかもですm( )m
外部の関数と引数、どちらに注目する?
(あえてdataProvidor使わず書きました)
function testA() { Mockery::shouldRecieve('aaa')->andReturn('a'); .... } function testB() { Mockery::shouldRecieve('aaa')->andReturn('b'); .... } function testC() { Mockery::shouldRecieve('aaa')->andReturn('c'); .... }
これと、
function testA() { $param = 'x' Mockery::shouldRecieve('aaa')->with('x')->andReturn('a'); Mockery::shouldRecieve('aaa')->with('y')->andReturn('b'); Mockery::shouldRecieve('aaa')->with('z')->andReturn('c'); .... } function testB() { $param = 'y' Mockery::shouldRecieve('aaa')->with('x')->andReturn('a'); Mockery::shouldRecieve('aaa')->with('y')->andReturn('b'); Mockery::shouldRecieve('aaa')->with('z')->andReturn('c'); .... } function testC() { $param = 'z' Mockery::shouldRecieve('aaa')->with('x')->andReturn('a'); Mockery::shouldRecieve('aaa')->with('y')->andReturn('b'); Mockery::shouldRecieve('aaa')->with('z')->andReturn('c'); .... }
このテストの違い。
関数のテスト?引数依存???
前者は該当関数のreturn値に対するテスト。
後者はこのテストコードの引数に対するテスト。
inputに対して、outputが正しいことを自動テストがしていると考えるなら、
後者のほうが‘aaa’に対しては、より本質に近いのではφ(・・
とはいえ、外部に環境が依存している、例えばDBやapiをモックする必要があったら、その時は前者が正しいのかもしれないφ(・・