@toshiyuki83 Webサービス更新履歴&技術情報

PHP(FuelPHP)とかJavaScript(TitaniumMobile)とか、Webサービス情報など

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秒でした)