[英]Laravel 9 unit test
这是下面的更新及其我创建的单元测试。 当我运行测试时,出现以下错误:“预期响应状态代码 [200] 但收到 404。无法断言 200 与 404 相同。” 你能帮我吗 ? 在我的控制器中:
/** @var \App\Models\Transaction */
$previousTrans = Transaction::whereNroTransaction($request->input('transaction_id'))->first();
if (is_null($previousTrans)) {
return response()->json([
'success' => false,
'message' => 'Transaction Not Found'
], 404);
}
$cancelingTrans = $previousTrans->replicate([
'NroTransaction',
'FechaTrans',
'EstPrisEnCompte',
'Msg_error',
'NumTrans_cancel',
'CanalTransaction'
]);
$cancelingTrans->fill([
'NumTel' => $request->input('msisdn'),
'observ' => $request->input('observation'),
'TipoTrans' => 9
]);
if ($cancelingTrans->save()) {
return new TransactionResource($cancelingTrans);
}
return response()->json([
'success' => false,
'message' => 'Could not cancel the deposit'
], 500);
这是我的单元测试:
public function test_deposit_canceled()
{
$deposit = Transaction::factory()->create([
'NumTel' => '22899999999',
'observ' => 'first'
]);
$this->putJson("api/deposits/{$deposit->id}", [
'NumTel' => '22900000000',
'observ' => 'Second'
])
->assertStatus(200);
}
我的路由:
Route::put('deposits/{deposits}/cancel', [DepositController::class, 'update']);
在您的测试中,您使用的是路线api/deposits/{$deposit->id}
,而您已将路线声明为:
Route::put('deposits/{deposits}/cancel', [DepositController::class, 'update']);
所以我猜你需要更新你的实际调用:
$this->putJson("api/deposits/{$deposit->id}/cancel", [
'NumTel' => '22900000000',
'observ' => 'Second'
])
->assertStatus(200);
我也有点困惑,为什么你没有注册带有api
后缀的路由,例如:
Route::put('api/deposits/{deposits}/cancel', [DepositController::class, 'update']);
但也许这是 laravel 为你处理的事情?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.