getData
メソッドは、データをロジックから分離して、別のクラスの一部にする必要があると思います。次に、そのクラスのモックをTestClass
依存関係としてインスタンスに渡すことができます。
class TestClass
{
protected $repository;
public function __construct(TestRepository $repository) {
$this->repository = $repository;
}
public function getStuff()
{
$data = $this->repository->getData('Here');
$data2 = $this->repository->getData('There');
return $data . ' ' . $data2;
}
}
$repository = new TestRepositoryMock();
$testclass = new TestClass($repository);
モックはTestRepository
インターフェースを実装する必要があります。これは依存性注入と呼ばれます。例えば:
interface TestRepository {
public function getData($whatever);
}
class TestRepositoryMock implements TestRepository {
public function getData($whatever) {
return "foo";
}
}
インターフェイスを使用してコンストラクターメソッドで強制することの利点は、上記TestClass
のように、インターフェイスが定義した特定のメソッドの存在を保証することですgetData()
。実装が何であれ、メソッドはそこになければなりません。