そのような雄弁なレポが与えられた場合。
class PinRepo {
protected $pinModel;
public function __construct( Model $pinModel )
{
$this->pinModel = $pinModel;
}
public function addPinToProject( $page_id, $inputs )
{
$pin = new $this->pinModel();
$pin->fill($inputs);
$pin->save();
return $pin;
}
}
私の最初の試みは:
class PinRepoTest extends TestCase {
public function setUp()
{
parent::setUp();
$this->modelMock = Mockery::mock( 'Pin' );
$this->pinRepo = PinRepo( $this->modelMock );
}
public function testAddPinToPage()
{
$this->modelMock
->shouldReceive('fill')->with(["project_page_id"=>1])
->once()
->andReturn(Mockery::self())
->shouldReceive('save')
->once();
$this->pinRepo->addPinToProject( 2, ["project_page_id"=>1]);
}
}
しかし、私はこのエラーを受け取ります(これは理にかなっています)
「メソッド ::fill() はこのモック オブジェクトに存在しません」
この設定を考えると、そのテストに合格する方法はありますか?