我開始使用PHP單元,並且我正在嘗試爲需要作爲類的__construct方法中的依賴項來測試類的雄辯模型構建模擬。PHP單元存儲庫測試案例的模擬雄辯模型
這是我的類的構造函數我想測試:
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;
}
}
我的測試類是這樣的:
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
}
}
我得到這個錯誤:
1)應用程序\ Repository \ Link \ EloquentLinkTest :: testCase 傳遞給App \ Repository \ Link \ EloquentLink :: __ construct()的參數1必須是Illuminate \ Database \ Eloquent \ Model的實例,Mock_ModelLink的實例_ea1343ff給出
我該如何讓模擬擴展Model類?
謝謝你,我更換了一件與你的信息。在模型中,鏈接擴展Eloquent(這是一個用於Illuminate \ Database \ Eloquent \ Model的laravel別名)。所以我將其更改爲:class Link擴展了Illuminate \ Database \ Eloquent \ Model – Barry127 2014-09-30 20:08:59
沒有什麼錯,但_that_'別名'提供的級別高於PHP語言,特別是Laravel應用程序。如果這也引發了一個問題,那麼你可能會改變你的測試用例,從'app/tests/TestCase.php'擴展而不是直接從'PHPUnit_Framework_TestCase'擴展。該類將處理引導Laravel應用程序(包括'Eloquent'外觀) – 2014-09-30 20:12:48