0
我有這樣一段代碼:如何測試Laravel偵察員(與Algolia)?
public function index(Request $request, Runner $runnerParam)
{
$name = $request->input('name');
$fromDate = $request->input('from_date');
$toDate = $request->input('to_date');
$runners = Runner::query();
if ($name) {
$runners = $runnerParam::search($name);
}
if ($fromDate && $toDate) {
$runners->where('created_at', '<=',$toDate)
->where('created_at', '>=', $fromDate);
}
switch ($type) {
case 1:
$runners->where('role', '=', runner::PRO);
break;
case 2:
$runners->where('role', '=', runner::AMATEUR);
break;
}
$runners = $runners->get();
foreach($runners as $runner){
$runner->distance = $runner->stats->sum('distance');
}
return $runners;
}
的問題是,我怎麼寫測試呢?如果我只是試圖在測試中提供「名稱」,它將不會返回任何內容,例如search()函數在測試時根本不起作用。試圖很難找到這方面的任何信息,但信息很稀缺,而且我最終得到的結果是像'將Algolia驅動程序設置爲null',這是我設法做的,但沒有效果,因爲我不知道什麼是重點這樣做,你如何在測試中應用它。這裏絕對沒有成功的測試例子,只是幾個簡短的回答問題並沒有什麼幫助。
一塊測試:
public function testNameFilter()
{
$this->logIn();
$runners = factory(runner::class, 30)->create();
$name = $runners[0]->name;
$response = $this->json('get', route('api::runners.get'), ['name' => $name]);
$responseContent = $response->getContent();
...
}
所以,我所得到的到底是空responseContent,這意味着這不是測試的正確方法。有什麼想法嗎?
謝謝,我會考慮一下。 – Gishas