我开始使用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