3

我正在组织我的测试文件夹以反映我的应用程序中的命名空间对象和接口。但是,在使用名称空间练习 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'
4

1 回答 1

7

assertInstanceOf方法需要一个字符串,而不是一个对象。试试User::class。该::class符号是在 PHP 5.5 中引入的

<?php

use Acme\User;

class UserTest extends TestCase
{
    public function testCanBeLoaded()
    {
        $this->assertInstanceOf(User::class, new User);
    }
}

2015 年 11 月 22 日更新

使用当今 PHP 的最佳实践更新了我对更好解决方案的回答。

于 2013-10-17T18:04:14.027 回答