3

受け入れテストに Behat/Mink と Selenium を使用しています。私の Web ページが Ajax 経由でサーバーに対して不正な形式の呼び出しを行っているかどうかを判断する必要があります。問題は、サーバーが不適切な形式のコードを「修正」しようとしても、有効なデータを返そうとすることです。

私の Web サイトから行われた ajax 呼び出しを「傍受」して検証する方法はありますか?

現在、私の FeatureContext クラスは次のようになっています。

public function performAnAction()
{
  $this->enterInField('test', 'field');
  $this->hitOKButton();
  $this->assertResponseContains('success');
}

私は次のようなことをしたいと思います:

public function performAnAction()
{
  $this->enterInField('test', 'field');
  $this->hitOKButton();
  $ajax = $this->getAllAjaxCalls();
  foreach ($ajax as $call) {
    // perform some validation
  }
  $this->assertResponseContains('success');
}
4

1 に答える 1

1

ajax 呼び出しのチェックを行うための 2 つの優れたリソースを次に示します。

ビートミンクのやり方

http://docs.behat.org/cookbook/behat_and_mink.html#defining-our-own-featurecontext

これは、_before と _after のオーバーライドを使用して基本機能の内部を深く掘り下げた優れたソリューションであり、非常に興味深いものですが、全体を読むことで、フレームワークが内部で実際に行っていることをよりよく理解するのに役立ちます。

http://blog.scur.pl/2012/06/ajax-callback-support-behat-mink/

ビルトインの待機関数を js コールバックで使用するだけで、任意の html 要素の jquery data[] オブジェクトに応答を入れてカスタム ステップ定義で必要なものを取得し、期待される出力をそのように検証できると思います。

$this->getSession()->wait(5000,
        "$('.someCssClassSelectorToElementWithResponseStuff').length > 0"
    );

要素が機能するjsオブジェクトである場合、またはjqueryオブジェクトとして返される場合は、長さの代わりに.size()を使用できます。注入されたjsがtrueまたはfalseと評価されて成功/失敗を取得するようにしてください。

于 2013-01-08T03:39:35.350 に答える