我添加了phpunit
作为作曲家依赖,做了composer update
。
我写了一个简单的测试,如下:
$user = new User;
$user->save();
我跑
vendor/bin/phpunit
或
vendor/bin/phpunit -c phpunit.xml
但是我得到了
Undefined method User::save()
同时我可以看到$user instanceof Eloquent
是真的。
更糟糕的是 - 如果我call('POST', '/posts')
我遇到同样的问题 - Undefined method Post::save()
我错过了什么吗?如何正确运行测试?
相关代码部分:
https://gist.github.com/anonymous/5849706
更新
我将回购推送到http://github.com/laravel-test-948320/bearded-bugfixes
实际上更改扩展Eloquent以扩展Illuminate \ Database \ Eloquent \ Model解决问题,但我仍然想了解是什么。
答案 0 :(得分:1)
我重新创建了你的整个测试套件(我在读这篇文章时正在设置我的测试套件)。 所有成功的测试,所以我想知道你有哪些版本:
奇怪的是,call()也会导致未定义的save()...
您是否安装了任何其他软件包或使用名称空间?
答案 1 :(得分:1)
尝试扩展Illuminate \ Database \ Eloquent \ Model而不是Eloquent,看看是否有所作为。这可能是一个自动加载问题。你能从应用程序中保存模型吗?例如,您是否可以在路径中创建模型并转储保存功能的结果?
另一个问题是,您是通过composer还是laravel ClassLoader(global.php文件)加载模型?我在使用ClassLoader时自动加载了我的类,我遇到了麻烦。
我怀疑这是一个作曲家问题,因为laravel处理别名,所以转储自动加载不应该改变任何东西。如果在该文件中编译了Eloquent别名,那么运行'artisan clear-compiled'可能会有效。
此刻无法想到任何其他事情。有人有其他想法吗?
答案 2 :(得分:0)
听起来像你的$ user和$ post类没有扩展Eloquent类。
确保您的文件中包含以下内容:
class User extends Eloquent {
...
}
答案 3 :(得分:0)
尝试将parent :: setUp()添加到测试类中的__construct()