当前位置: 首页 > 知识库问答 >
问题:

使用Codeception的Laravel 4模型单元测试-未找到“雄辩”类

向锦
2023-03-14

我正在尝试使用Codeception来运行我的Laravel4单元测试。

为一个没有依赖项的简单类运行测试效果很好。但是当我实例化一个依赖于雄辩的模型时,我得到了这个致命的错误:

PHP致命错误:在第4行的/var/www/project/app/models/Role.PHP中找不到类'elount'

单元测试:

<?php
use Codeception\Util\Stub;
class TestModel extends \Codeception\TestCase\Test 
{
  public function testExample()
  {
    $role = new Role;
    $role->name = 'superuser';
    $this->assertEquals('superuser', $role->name);
  }
}

型号:

<?php
class Role extends Eloquent
{
  public function users()
  {
    return $this->belongsToMany('User');
  }
}

项目结构:

我正在从项目根目录运行vendor/bin/codecept运行单元,文件结构如下:

/project
  codeception.yml
  /vendor/bin/codecept
  /app
    /tests
      unit.suite.yml
      /unit
         ExampleTest.php
    /models
       Role.php
                ...etc

我做错了什么?

共有3个答案

姬凡
2023-03-14

这个问题的答案现在有点过时了。使用Laravel 5,我得到了同样的错误(类'雄辩'未找到...),并通过从Laravels基本TestCase.php文件复制代码来解决它。此文件用于Laravel框架内的测试(不使用代码欺骗)。

要修复“Eloquent not found”错误,请将以下行添加到project/tests/unit/_bootstrap.php

<?php
$app = require __DIR__.'/../../bootstrap/app.php';
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();

老实说,我不知道它为什么有效,但它确实有效!如果我知道原因或有人评论,我会编辑。

单于阳
2023-03-14

我可能会迟到,但如果你不需要codecept的东西。您应该扩展laravel的PHPUnit_Framework_测试用例实现,称为just TestCase。这样地:

class TestModel extends TestCase {
}
陈奇希
2023-03-14

通过查看Codeception L4示例应用程序,我了解了如何引导自动加载来解决此问题,方法是将以下行添加到project/app/tests/_boostrap.php:

include __DIR__.'/../../vendor/autoload.php';
$app = require_once __DIR__.'/../../bootstrap/start.php';
\Codeception\Util\Autoload::registerSuffix('Page', __DIR__.DIRECTORY_SEPARATOR.'_pages');

编辑:从Laravel 4.0升级到4.1时,还需要添加一行:

$app->boot();
 类似资料:
  • 我正在使用代码欺骗TDD开发一个简单的PHP应用程序。我用一个简单的断言创建了我的第一个单元测试DogTest.php,但是它抱怨找不到Dog类。 我在根目录中创建了一个Dog.php文件,并将其放在/src下,但两者都不起作用。我认为这要么是名称空间问题,要么是自动加载问题,但是Codeception文档(以及我看过的各种TDD指南)缺少这个重要的细节。 有人能告诉我如何让我的狗测试来检测狗类吗

  • 在Laravel应用程序中使用使用PHPUnit编写单元测试时,我遇到了一个问题。我收到的错误是: PHP致命错误:类'雄辩'没有在第7行 /path/to/project/app/models/ExampleClass.php中找到 看起来

  • 我正在尝试为我的简单网站编写一些单元测试(用于学习)。 项目结构: 在index.php中,我定义了一个。 函数位于中,类位于中。 测试/单元/BuildGalleryTest.php代码: 当运行我得到以下错误: 我做错了什么?如何解决这个问题?

  • 我将有一个充满涉及其他表(关系)的信息的表。此表中的大多数信息将只有引用相关表的ID。如果我使用“产品”作为此表的示例,对于某些列来说可能是这样的: 我想把这个“产品”表倒出到一个列表中。当我将其转储(关系)时,我需要查找这些列中的所有项。我知道如何做物品和物品,但是我不确定如果我有一个“产品”模型,我怎么能用雄辩的模型一次性做到这一点?我应该让产品表只是一个数据透视表吗?我可以用雄辩的模型做它,

  • 我在使用Yii2进行Codeception时遇到了一些问题。我刚刚升级到Yii 2.0.10,一直在使用本指南 我收到错误:

  • 我正在写一个简单的测试用例。我使用作曲家安装了代码欺骗。我的测试用例位于测试用例文件夹内的根文件夹中 当我尝试运行以下代码时 当我尝试在浏览器中运行代码时,我得到以下错误 在我的项目中有一个名为yiisoft\yii2-codecsion\TestCase.php的文件 我做错了什么?有人能帮忙吗。?