【问题标题】:Test rest api return 302测试休息api返回302
【发布时间】:2020-07-04 17:20:21
【问题描述】:

我使用的是 REST API。

例如,requwest http://api/events/?api_token=KFvcc10H4l 向我返回 json。

但在测试中出现错误 302

   /**
     * @return void
     */
    public function testReturnOneEventsItem()
    {
         $this->get( '/events/3?api_token=KFvcc10H4l')
                //  $response = $this->get('http://api/events');
                ->assertStatus(200);
    }

解决方案:

需要 wreti 数据进行测试。单元测试不使用你的数据库。

$event = factory(Event::class)->create();
        $user = factory(User::class)->create();
        $this->get('events/' . $event->id . '?&api_token=' . $user->api_token)
                ->assertStatus(200)->assertJson([
                        'id' => $event->id,
                        'title' => $event->title,
                        'city_id' => strval($event->city_id),
                ]);;

【问题讨论】:

  • 缺少api/ 部分?
  • 如果我添加 api 无济于事。但是$this->get('http://api/',$server)->assertStatus(200);工作

标签: laravel rest laravel-resource


【解决方案1】:

您收到status code 302 是因为您请求的资源已被移动到临时位置。 您的代码将成功返回请求的 API,但仍返回 status code 302,我实际上认为这是因为它已经存储在请求它的位置。

如果第一次源请求某个API并且成功接收到请求的资源,则返回status code 200。因此,后续调用只会返回状态码 302。

关注link,了解更多关于status code 302的信息。

【讨论】:

  • 现在 401。我使用 ->middleware('auth:api')- 这条路线,但不明白,为什么它适用于外部请求,但不适用于功能测试
  • 添加 auth-api 中间件后,它是否仍然适用于测试,还是停止适用于测试和外部请求?
  • 我明白了。测试 Laravel 使用 temp 数据库,而对于测试,您首先需要将数据写入测试本身。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 2016-05-03
  • 2015-04-14
  • 1970-01-01
  • 2022-01-07
  • 2019-06-05
相关资源
最近更新 更多