データプロバイダーでは、期待される結果も提供します。メソッドが入力を受け取り、値を返すようにしたいので、実装の1つにエラーがある可能性があるため、計算を2回実装したくありません。
問題のメソッド/関数を実際にテストしているので、モックを使用するつもりはありません。
4つのパラメーターに基づいて何かを計算している場合、データプロバイダーは5を渡します。最初のパラメーターは期待される結果であり、その後にメソッド/関数に渡されるパラメーターが続きます。
このことから、私の電話は非常に簡単です。
public static function GetRemoteAddressFromWebServerDataProvider()
{
return array(
array('127.0.0.1', NULL, '127.0.0.1'),
array('127.0.0.1', '127.0.0.1', NULL),
);
}
/**
* @dataProvider GetRemoteAddressFromWebServerDataProvider
*/
public function testGetRemoteAddressFromWebServer($Result, $HTTPXSetting, $RemoteAddress)
{
$_SERVER['HTTP_X_FORWARDED_FOR'] = $HTTPXSetting;
$_SERVER['REMOTE_ADDR'] = $RemoteAddress;
$this->assertEquals($Result, GetRemoteAddressFromWebServer());
}