PHPUnit手册显示,我可以在注释中使用类常量用于@expectedExceptionCode,请参阅PHPUnit @expectedExceptionCode。
我试着在我的名字间隔模型中使用它,这个模型从雄辩扩展而来。当我运行我的测试时,我得到了一个:"PHP致命错误:类‘雄辩’找不到“,运行该应用程序都很好,所以它取决于Unit-测试,不是吗?
有什么想法吗?
namespace Foo\Models;
use \Eloquent;
class Bar extends Eloquent {
const ERRORCODE = 150;
...
}
class BarTest extends TestCase {
/**
* @expectedExceptionCode Foo\Models\Bar::ERRORCODE
*/
public function testFoobar()
{
$name = 'foobar';
Bar::findBarOrFail($name);
}
}
为求澄清:
PHP Fatal error: Class 'Eloquent' not found in PathToProject/app/models/Bar.php
更新
在@的评论后,我得到了上面的代码工作!谢了伙计!
但是,当我在控制器测试中引发异常时,仍然会发生致命错误。
即使我是否使用名称空间。
use \Eleoquent;
use Foo\Models\Bar;
class TestController extends TestCase {
/**
* @expectedExceptionCode Foo\Models\Bar::ERRORCODE
*/
public function testStoreActionWithInvalidDatatyp ()
{
$this->call('POST', '/routeToException');
}
更新2
让我的单元测试工作,当我扩展\照明\数据库\雄辩\模型,而不是雄辩。
namespace Foo\Models;
use \Illuminate\Database\Eloquent\Model;
class Bar extends Model {
const ERRORCODE = 150;
...
}
这与拉勒维尔博士不同。还好吗?
发布于 2014-09-26 04:35:42
"class“\Eloquent
实际上是一个别名,在运行时由Laravel框架注册。在设置这些别名之前,您要让PHP解析模型类文件,导致它失败。正确的方法就是避免全局名称空间别名,而使用真实的类名(在您的例子中,是Illuminate\Database\Eloquent\Model
而不是Eloquent
)。您可以在app/config/app.php
中找到一个类别名列表。
https://stackoverflow.com/questions/25975725
复制相似问题