Laravel проверочное тестирование с использованием провайдера данных - PullRequest
0 голосов
/ 01 мая 2020

У меня есть laravel проверка правил, и я хочу проверить все это, дать правила с одним методом и dataProvider, используя phpunit

Например, у меня есть правила required|string|max:255 Я хочу проверить required string and max: 255` правил без написания метода тестирования отдельно

Но я могу сделать это только для required правил. Я хочу проверить вторые правила, такие как digit_between для поля идентификаторов, но поле first_name не имеет digit_between, но это string

  1. здесь мой пример правил код
    {
     return [
      'identity_number' => 'required|digits_between:1,255|unique:borrowers',
      'first_name'      => 'required|string|max:255',
      'last_name'       => 'required|string|max:255',
      'birthdate'       => 'required|date',
     ];
    }

2.тестирование кода:

    /**
     * Test store validation.
     *
     * @return void
     *
     * @group user
     * @dataProvider requiredStoreValidationProvider
     */
    public function testStoreValidation($formInput, $formInputValue)
    {
        $response = $this->actingAs($this->user)
            ->post(route('borrower.store'), [
                $formInput => $formInputValue,
            ]);

        $response->assertSessionHasErrorsIn('validation', $formInput);
    }

    /**
     * Required store data validation provider.
     *
     * @return \string[][]
     */
    public function requiredStoreValidationProvider()
    {
        return [
            ['identity_number', ''],
            ['first_name', ''],
            ['last_name', ''],
            ['birthdate', ''],
        ];
    }

1 Ответ

0 голосов
/ 01 мая 2020

Каждый индекс представляет собой один тестовый сценарий, поэтому первый сценарий должен проверить требуемую проверку, второй сценарий будет digits_between: 1,255, мы установили 256 для identity_number, потому что вы определили номер диапазона, а остальные, как вы можно увидеть.

/**
     * Required store data validation provider.
     *
     * @return \string[][]
     */
    public function requiredStoreValidationProvider()
    {
        return [
            ['identity_number', ''],
            ['identity_number', 256],
            ['first_name', ''],
            ['first_name', 123],
            ['first_name', str_random(256)],
            ['last_name', ''],
            ['last_name', 123],
            ['last_name', str_random(256)],
            ['birthdate', ''],
        ];
    }

...