下記のようなコードに対してユニットテストを書こうとしています。
①どのようにしたらテストコードが書けますか?
②かけない場合、どのようにコードを変更すればよいですか?
対象のソースコード)
<? class Sample_Model_Service_A { private $_result private $_options private $_someValue public function __construct($params, $ids, $data) { $this->_options = Sample_Model_Service_B::getOption($data); } private function setSomeValue() { // $someValueを$_optionsをもとに整形を行う処理 $this->_someValue= $someValue; } private function setResult() { // $someValueをさらに別の観点で整形を行う処理 // この処理を一部変更したためテストを書きたい $this->_result = $result; } public function getter() { // 取り出し retrn $this->_result; } } ?> <? class Sample_Model_Service_B { // DBからOptionを取り出す public static function getOption($data) { $dao = new Model_Dao_Option(); $option = $dao->getOption($data['id']); return $option; } } ?>
現状書いているテストコード)
public function testsetResult() { // とりあえず途中まで動くように定義 $params = $ids = $data = []; // ReflectionClassが使えると読んで使ってみたが、Sample_Model_Service_Aを生成しきれない(DB周りのテストの仕方が分かっていない) $sample = new Sample_Model_Service_A($params, $ids, $data); $reflection = new ReflectionClass($sample); $method = $reflection->getMethod('setresult'); $method->setAccessible(true); $result = $method->invoke($sample); // アサート $this->assertSame($result); }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。