我想将测试和数据提供程序分开。使用PHP 8属性,当引用外部数据提供程序时,我无法运行以下测试:
#[Test]
#[DataProviderExternal(RouterDataProvider::class, 'registerGetRouteData')]
public function itRegistersGetRoute(Route $route, array $expectedResult)
{
$this->router->get($route);
$this->assertEquals($expectedResult, $this->router->getRoutes());
}
我的数据提供程序类:
class RouterDataProvider
{
public static function registerGetRouteData(): array
{
return [
$route = new Route('/', ['IndexController', 'index']),
[
'GET' => [
'/' => $route,
],
'POST' => []
]
];
}
}
我怎样才能让这个测试使用所需的provider方法运行呢?
1条答案
按热度按时间dldeef671#
通过使用以下标志运行PHPUnit,我能够准确地看到问题所在:
数据集无效。将
return
更改为yield
并将registerGetRouteData
方法的返回类型从array
更新为\Generator
解决了此问题。我运行的phpunit带有
--testdox
标志,所以我不确定这是否是我最初看到错误的原因,并假设测试被跳过了。