Как использовать провайдеры данных (data providers) в PHPUnit?

Пользователь

от marshall.cummings , в категории: PHP , год назад

Как использовать провайдеры данных (data providers) в PHPUnit?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от clifford , год назад

@marshall.***mings 

Для использования провайдеров данных в PHPUnit следуйте следующим шагам:

  1. Создайте функцию, которая возвращает массив массивов данных (другими словами, провайдер данных). Каждый внутренний массив будет представлять одну набор данных для вашего тестового метода.
1
2
3
4
5
6
7
8
public function dataProvider()
{
    return [
        [1, 2, 3],   // Входные значения и ожидаемый результат для первого набора данных
        [4, 5, 9],   // Входные значения и ожидаемый результат для второго набора данных
        [7, 8, 15],  // Входные значения и ожидаемый результат для третьего набора данных
    ];
}


  1. Аннотируйте свою тестовую функцию атрибутом @dataProvider, указав имя вашей функции-провайдера данных в качестве значения атрибута. Входные параметры функции соответствуют элементам внутреннего массива провайдера данных.
1
2
3
4
5
6
7
8
/**
 * @dataProvider dataProvider
 */
public function testAdd($a, $b, $expected)
{
    $result = $a + $b;
    $this->assertEquals($expected, $result);
}


  1. Запустите свой тест с помощью PHPUnit. В результате каждый набор данных из провайдера данных будет использоваться отдельно для выполнения соответствующих тестов.
1
phpunit YourTest.php


PHPUnit выполнит ваш тест метод с каждым набором данных провайдера данных, отчитывая об ошибках, если таковые имеются, для каждого из наборов данных.


Обратите внимание, что провайдеры данных в PHPUnit также могут быть классами или статическими методами, возвращающими наборы данных. Это может быть полезно, если вам нужно использовать один и тот же провайдер данных в нескольких тестовых классах.