Я впервые пытаюсь заставить работать PHPUnit; Я хочу передать данные в метод TestCase setUp()
, чтобы я мог создать новый экземпляр для каждого теста. Когда я пишу ...
protected $furniture;
/**
* Instantiate an instance of Furniture for use with all test methods not involved with class constructor objectives
* @dataProvider validConstructorArgumentProvider
*/
protected function setUp($sku, $name, $price, $dimensions) : void
{
$this->furniture = new Furniture($sku, $name, $price, $dimensions);
}
в начале моего класса, тогда бегун теста выдает следующие ошибки:
ArgumentCountError: Too few arguments to function WebApp\tests\FurnitureTest::setUp(), 0 passed in /Users/ScottAnderson/Documents/Tech/commissions/shopping_app_test/vendor/phpunit/phpunit/src/Framework/TestCase.php on line 1024 and exactly 4 expected
Я заметил this :
Все поставщики данных выполняются перед вызовом метода setUpBeforeClass () stati c и первым вызовом метода setUp (). Из-за этого вы не можете получить доступ к любым переменным, которые вы там создаете, из провайдера данных. Это необходимо для того, чтобы PHPUnit мог вычислить общее количество тестов.
Мой указанный поставщик данных выглядит так:
private function validConstructorArgumentProvider()
{
return [
["TBL11FN", "Table", 60.0, [120, 50, 70]],
["CBN33FN", "Cabinet", 70.0, [60, 120, 210]],
["DSK5FN", "Desk", 55.0, [180, 70, 70]],
["PCT102FN", "Picture Frame", 13.0, [60, 40, 4]],
["LMP40FN", "Lamp Shade", 9.0, [40, 40, 25]]
];
}
... так что, возможно, это так невозможно передать аргументы dataProvider в setUp()
, но в этом случае я не вижу смысла в функции установки per-test-method . Можно ли передать аргументы из dataProvider в `setUp ()?
NB : я видел это , но я выполнил шаги для наиболее предпочтительного ответа и мне все еще не везет