我使用Laravel + Doctrine(而不是Eloquent)+ Angular Routing創建了一個項目。我決定使用PHP單元測試來測試API(控制器,存儲庫)其實我在測試一個簡單的方法時產生了一個錯誤。這裏是我的代碼:Laravel - 使用Doctrine時的phpUnit測試
DoctorineRestaurantRepositoryTest.php:
class RestaurantTest extends TestCase
{
private $DoctrineRepository;
public function setUp() {
$this->DoctrineRepository = DoctrineRestaurantRepository::class;
}
/** @test */
public function validator()
{
$this->DoctrineRepository->setTestVariable(3);
$this->assertEquals($this->DoctrineRepository->getTestVariable(), 3);
}
.
.
.
}
我的庫文件:(DoctrineRestaurantRepository.php)
class DoctrineRestaurantRepository extends DoctrineBaseRepository
{
private $testVariable = 0;
/**
* @return int
*/
public function getTestVariable()
{
return $this->testVariable;
}
/**
* @param int $testVariable
*/
public function setTestVariable($testVariable)
{
$this->testVariable = $testVariable;
}
.
.
.
}
我跑的測試,它給了一個錯誤:
Call to a member function setTestVariable() on string
任何解決它的建議?
你有沒有在__construct注入DoctrineRepository?我認爲你需要檢查它是否被注入。 –
$ this-> DoctrineRepository是在哪裏創建的?聽起來像你引用像DoctrineRepository :: class這樣的類名。 – btl
@btl我編輯了我的問題。 – AFN