我正在组织我的测试文件夹以反映我的应用程序中的命名空间对象和界面。但是,在使用命名空间练习TDD时,我一直在努力维护秩序。我完全不知道如何让所有这些作品发挥得淋漓尽致。任何有关此问题的帮助将不胜感激!
结构:
app/
Acme/
Repositories/
UserRepository.php
User.php
tests/
Acme/
Repositories/
UserRepositoryTest.php
UserTest.php
应用程序/ Acme公司/ user.php的
<?php namespace Acme;
use Eloquent;
class User extends Eloquent {
protected $guarded = array();
public static $rules = array();
}
应用程序/测试/ Acme公司/ UserTest.php
<?php
use Acme\User;
class UserTest extends TestCase {
public function testCanBeLoaded()
{
$this->assertInstanceOf(User, new User);
}
}
PHPUnit结果:
1) UserTest::testCanBeLoaded
ErrorException: Use of undefined constant User - assumed 'User'
答案 0 :(得分:7)
assertInstanceOf
方法需要一个字符串,而不是一个对象。试试User::class
。 ::class
符号为introduced in PHP 5.5
<?php
use Acme\User;
class UserTest extends TestCase
{
public function testCanBeLoaded()
{
$this->assertInstanceOf(User::class, new User);
}
}
2015年11月22日更新
使用当今PHP的最佳实践更新了我对更好解决方案的答案。