저는 PHP 유닛으로 시작하고 테스트 할 클래스에 대한 __construct 메소드의 의존성으로 요구되는 Eloquent Model을위한 모의 (Mock)을 빌드하려고합니다.PHP 단위 모의 다큐먼트 저장소 테스트 케이스
1) 응용 프로그램 \ :이 오류가
namespace App\Repository\Link;
use Link as ModelLink; //Link is the Eloquent model to pass as constructor for EloquentLink
use Illuminate\Database\Eloquent\Model as Eloquent; //Link extends Eloquent
class EloquentLinkTest extends \PHPUnit_Framework_TestCase
{
protected $modelMock;
protected $link;
public function setUp() {
$this->modelMock = $this->getMockBuilder('ModelLink')->getMock();
$this->link = new EloquentLink($this->modelMock);
}
public function testCase()
{
//comes here
}
}
:
이namespace App\Repository\Link;
use App\Repository\RepositoryAbstract;
use Illuminate\Database\Eloquent\Model;
class EloquentLink extends RepositoryAbstract implements LinkInterface
{
protected $link;
public function __construct(Model $link)
{
$this->link = $link;
}
}
내 테스트 클래스는 다음과 같습니다
이
내가 테스트 할 내 클래스의 생성자 Repository \ Link \ EloquentLinkTest :: testCase 인수 1을 App \ Repository \ Link \ EloquentLink :: __ construct()로 전달하면 Illuminate \ Database \ Eloquent \ Model의 인스턴스 여야합니다. Mock_ModelLink 인스턴스 _ea1343ff 주어진어떻게 모의 모델 클래스를 확장 할 수 있습니까?
는
감사합니다. 귀하의 정보로 한 가지 더 변경했습니다. 모델 링크 확장 Eloquent (Illuminate \ Database \ Eloquent \ Model에 대한 laravel 별칭입니다.) 그래서 다음과 같이 변경했습니다. class Link extends Illuminate \ Database \ Eloquent \ Model – Barry127
아무 문제가 없지만 _that_ '별칭 '는 PHP 언어보다 상위 레벨, 특히 Laravel 응용 프로그램에 의해 제공됩니다. 그게 문제가된다면, 아마도'PHPUnit_Framework_TestCase'가 아니라'app/tests/TestCase.php'에서 확장하도록 테스트 케이스를 변경할 수 있습니다. 이 클래스는 Laravel 응용 프로그램의 부트 스트래핑 ('Eloquent'외관 포함) –