testClass = new class extends RedisCommand { use ByArgument; public static $byArgumentPositionOffset = 0; public function getId() { return 'test'; } }; } /** * @dataProvider argumentsProvider * @param int $offset * @param array $actualArguments * @param array $expectedArguments * @return void */ public function testReturnsCorrectArguments(int $offset, array $actualArguments, array $expectedArguments): void { $this->testClass::$byArgumentPositionOffset = $offset; $this->testClass->setArguments($actualArguments); $this->assertSame($expectedArguments, $this->testClass->getArguments()); } public function argumentsProvider(): array { return [ 'with wrong offset' => [ 1, ['key'], ['key'], ], 'with null value' => [ 0, [null], [null], ], 'with any value' => [ 0, ['value'], ['BY', 'value'], ], ]; } }