我已经在Laravel 4和Laravel 5中构建了laravel应用程序,但我决定这次首先编写所有测试,之前从未为琐碎的应用程序编写测试。
这是我的帐户类 - 用于说明
class Account extends Model
{
protected $customer_id;
protected $bookmaker_id;
protected $balance;
protected $profit;
public function __construct($customer_id, $bookmaker_id, $balance, $profit) {
$this->customer_id = $customer_id;
$this->bookmaker_id = $bookmaker_id;
$this->balance = $balance;
$this->profit = $profit;
}
}
所以我所有的单元测试运行良好:
我的路线已正确设置到我想要显示的页面
Route::get('/accounts', 'AccountController@index');
但这是出错的地方。实际上尝试运行页面来获取帐户列表很麻烦。我知道还有更多与控制器类有关,但这就是我所拥有的。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Account;
class AccountController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$accounts = Account::all();
return view('account.index', compact('accounts'));
}
}
然后我收到此错误 -
ErrorException in Account.php line 14:
Missing argument 1 for App\Account::__construct(), called in /Applications/MAMP/htdocs/mb-app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php on line 665 and defined
有人可以告诉我应该如何设置我的控制器吗?直到我为单元测试添加了__construct(),这一切都没问题。
感谢。
答案 0 :(得分:0)
通过使用__construct,它会在您初始化它时期望参数。所以相反,你要使用
$accountModel = new Account($customer_id, $bookmaker_id, $balance, $profit);
$accounts = $accountModel->all();
如果您想使用这些变量来创建新模型,请查看$fillable。