我在Laravel中创建了一个简单的UserRepository类,它将处理所有CRUD功能。
一切都运行正常,但是当我试图用phpunit对它进行单元测试时,它就完全崩溃了。
我正在运行Laravel的最新开发版本,我知道这不是一个稳定的版本,但我不知道这是一个laravel错误还是我做错了什么。
当运行phpunit时,我得到this huge error output.
我上的课是
模范角色
namespace Shazzam\Models;
use Illuminate\Database\Eloquent\Model;
class Role extends Model {
protected $fillable = ['name'];
}
角色存储库
namespace Shazzam\Repositories;
use \Shazzam\Models\Role;
class RoleRepository
{
/**
* @param array $args
* @return bool
*/
public function create($args)
{
$role = new Role($args);
return $role->save();
}
}
角色存储库测试
use Shazzam\Repositories\RoleRepository;
class RoleRepositoryTest extends TestCase
{
public $repo;
public function setUp()
{
$this->repo = new RoleRepository;
}
public function test_it_creates_a_new_role()
{
$role['name'] = "NewRole";
$this->assertTrue($this->repo->create($role));
}
}
如果你发现我做错了什么,请告诉我。我真的很想继续开发Laravel的开发版本。谢谢。
编辑1-删除了RoleRepository创建方法中的数组类型提示。
5条答案
按热度按时间mxg2im7a1#
您应该呼叫基底类别setUp方法:
41zrol4v2#
对我来说,它的工作原理如下:
重要提示:parent::tearDown() 在我的例子中必须低于 DB::rollBack(),否则它无法工作!
qzlgjiam3#
RoleRepository::create()传递的是
Illuminate\Support\Facades\Config
对象,而不是array
对象。删除签名中array
的类型提示,它应该会运行。neskvpey4#
我遇到这个问题是因为我的测试文件是扩展
PHPUnit\Framework\TestCase
的,所以我把它改为扩展Tests\TestCase
。hec6srdp5#
还有一个例子:
不要访问服务
__destruct
方法中的应用程序,因为在析构服务时应用程序可能已经终止