私は、ユーザーが SMS テキスト メッセージを介して対話できるようにするプロジェクトに取り組んでいます。Zend Framework の要求オブジェクトと応答オブジェクトをサブクラス化して、SMS API から要求を取得し、応答を送り返しました。開発環境を介して「テスト」すると機能しますが、単体テストを行いたいです。
しかし、テスト ケース クラス内では、リクエスト オブジェクトを使用していません。Zend_Controller_Request_HttpTestCase を使用しています。応答オブジェクトで同じ問題が発生すると確信していますが、まだその時点ではありません。
私の簡略化されたテストクラス:
class Sms_IndexControllerTest extends Zend_Test_PHPUnit_ControllerTestCase {
...
public function testHelpMessage() {
// will output "Zend_Controller_Request_HttpTestCase"
print get_class($this->getRequest());
...
}
}
テストを実行する前にリクエストとレスポンス オブジェクトをオーバーライドすると、次のようになります。
public function setUp()
{
$this->bootstrap = new Zend_Application(APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini');
parent::setUp();
$this->_request = new Sms_Model_Request();
$this->_response = new Sms_Model_Response();
}
フロント コントローラーを呼び出してディスパッチする前に、setMethod や setRawBody などの Zend_Controller_Request_HttpTestCase のメソッドを使用してテストをセットアップできません。
リクエスト オブジェクトとレスポンス オブジェクトをサブクラス化した後で、コントローラを単体テストするにはどうすればよいですか?