无法阻止 Laravel 限制 circleci 上的功能测试

Cannot prevent Laravel from throttling feature tests on circleci

使用Laravel 5.6

我不想使用 withoutMiddleware - 我正在尝试覆盖默认的限制设置,但似乎没有任何效果。

'api' => [
    'throttle:60,1',
    'auth:api',
],

改变油门数似乎完全没有用。

错误总是:

(
    [message] => Too Many Attempts.
    [exception] => Symfony\Component\HttpKernel\Exception\HttpException
    [file] => /root/laravel/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php
    [line] => 120
)

它在本地运行,但在 circleci 上运行,没有雪茄 - 尝试太多。

似乎只有 circlci 忽略了与节流有关的任何设置,并在做自己该死的事情。

我试图改变一切 - 但唯一阻止它发生的是 withoutMiddleware 并且它有其他我不想要的副作用。

最终通过 GitHub 的 this solution 变体解决了这个问题。

.env 中创建了一个环境变量:

OAUTH_TOKEN_MAX_ATTEMPTS='60,1' 

然后将以下内容添加到 App\Providers\RouteServiceProvider

/**
 * Define the routes for the application.
 *
 * @return void
 */
public function map()
{
    $this->mapApiRoutes();

    $this->mapWebRoutes();

    $oauthMaxAttemtps = env('OAUTH_TOKEN_MAX_ATTEMPTS', '60,1');

    Route::post('/oauth/token', [
        'uses' => '\Laravel\Passport\Http\Controllers\AccessTokenController@issueToken',
        'middleware' => "throttle:$oauthMaxAttemtps",
    ]);
}

并在 .circlci/cofig.yml:

jobs:
  build:
    docker:
      - image: weengsteam/php7.1-mysql-5.7
    working_directory: ~/laravel
    environment:
        APP_NAME: API
        APP_ENV: testing
        APP_KEY: base64:pLeAsEdOnTcOmEaNdStEaLmYdAtA?=
        APP_DEBUG: true
        DB_CONNECTION: mysql
        DB_HOST: 127.0.0.1
        DB_PORT: 3306
        DB_DATABASE: testing
        DB_USERNAME: laravel
        DB_PASSWORD: not-a-secret
        OAUTH_TOKEN_MAX_ATTEMPTS: 600,1