PHPの世界でテストを掘り下げようとしていますが、いくつか質問があります。ローンの申し込みを処理するコントローラーがあります。次に、作業の大部分がProcessLoanApplicationクラスに委任されます。
ApplyController
class ApplyController extends Controller
{
public function indexAction(Request $request)
{
$form = $this->createForm(new LoanApplication());
if($request->getMethod() == 'POST') {
$form->bind($request);
if($form->isValid()) {
$session = $this->getRequest()->getSession();
$loan_app_processor = new Tasks\ProcessLoanApplication($form, $session);
$loan_app_processor->process();
return $this->redirect($this->generateUrl('apply_thanks'));
}
}
Tasks \ ProcessLoanApplication
class ProcessLoanApplication
{
private $_QuickBaseModels;
private $_session;
private $_app; // submitted form data
private $_existingApp = false; // holds existing application in QB, if it exists
public function __construct(Form $form, Session $session)
{
$this->_app = $form->getNormData();
$this->_session = $session;
// save the form data to a session
$session->set('application', $this->_app);
// create the quickbase table models objects
$this->_QuickBaseModels['GenFnHome\Application'] = new GenFnHome\Application();
$this->_QuickBaseModels['GenFnHome\SSN'] = new GenFnHome\SSN();
}
public function process()
{
$this->_existingApp = $this->_getExistingApplication();
$app_status = $this->_existingApp[GenFnHome\SSN::LogInApplicationStatus];
if(!$this->_existingApp || ($this->_existingApp && ($app_status !== 'PENDING' && $app_status !== 'OPEN' && $app_status !== 'EXPIRED')))
return $this->_saveNewLoanApplication();
if($app_status == 'EXPIRED') $this->_reOpenApplication();
}
ここでは多くのことが行われているので、最初に概要を説明します。
- ユーザーがアプリケーションをリクエストします
- 申請書が検証されます
- 有効な場合は、ローン申請を処理します
- ユーザーがすでにアプリを持っているかどうかを確認します。持っている場合は、Xを実行します。Yでない場合は実行します。
- アプリケーションは、私のアプリケーションがXML over HTTPを介して通信する「オンラインデータベース」(QuickBase)に永続化されます(つまり、実際のデータベースはありません)
コミュニティへの私の質問:
- ここで何をテストする必要がありますか?私はそれが主に私次第であることを知っています、しかしおそらくコミュニティはdefが書かれるべきであるいくつかのベースラインテストを推薦することができます。コントローラ、プロセッサクラス、およびQuickBaseクラスをテストする必要がありますか?
- テストを互いに独立させる必要があります。つまり、indexActionが実行するすべてのことを実行し、設定される予想されるセッション変数を探すだけの1つの大規模なtestApplicationを用意するのではなく、各コンポーネントを個別にテストする必要がありますか?
- 最後に、実際に実際のリクエストを行わずに、どのようにしてAPI呼び出し(リクエスト/レスポンス)をテストしますか(私はPHPUnitを使用しています)。
- 他に知っておくべきことはありますか?
ありがとう!