繁体   English   中英

Laravel 9 单元测试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM