FuelPHPのユニットテストで楽天API系のテストコードが503エラーを返すときの対処方法 #fuelphp
FuelPHPでPHPUnitを使ったユニットテストで楽天API系のテストコードが503エラーを返すときの対処方法です。
「激安!1円ショップ」のような楽天APIを使用するようなアプリケーションを作る際、楽天APIにリクエストする様々なテストコードを書く必要があります。そしてコンソールから「oil test --group=App」というように、全てのテストコードを実行したとき、
Failed asserting that 503 is of type "array".
というようエラーが突如として返るときがあります。これは楽天APIの公式ドキュメントにも書いてありますが、「※短い時間の間に大量に、同一のリクエストURLへアクセスすると、一定時間利用できなくなる場合がございます。テストの際にはご注意ください。」というのが原因です。テストコードの量が多くなるにつれ、リクエストする回数が増えているのです。
一つの対処方法としては「oil test --group=Rakuten」というように、ユニットテストのクラス毎に実行させることですが、一度に全てのテストを行いたいときもあると思います。そのようなときはsleep関数がお手軽です。
class Test_Model_Rakuten extends TestCase
{
(※中略)
}
sleep(5);
というように末尾にsleep関数と待つ時間を入れれば、テストをクリアすることができました。(私の場合、5秒でした)