TL; DR:Behat + Mink(@javascript
w / Sahi)シナリオでは、Sahiはにテキストを入力し<input>
ますが、ページのJavascriptはSahiによって入力されたものを取得できません
アップデート:
解決策:Sahiの最後のバージョンをダウンロードすると問題が修正されました。バグが何であれ、修正されました。
コンテクスト
Behat + Minkで何ができるかをチームに示すために、小さなデモWebサイトを構築しています。正方形のサイズを入力してこの正方形の周囲長を取得できるページがいくつかあります。1つのページは単純な古いPOSTメソッドを使用しており、別のページはJavascriptを使用して周囲長を計算しています
「JSページ」のURL:http: //behatdemo.widop.com/js-square
私のチームにjavascriptのテストが可能であることを示すために、私はSahiをMinkドライバーとして使用していますが、機能していないようです。6
ユーザーが正方形の辺の長さとして入力し、周囲長として取得するシナリオを作成しました24
([githubのファイルへのリンク](https://github.com/clemherreman/behatdemo/blob/master/features/js_square.feature#L7 ))
@javascript
Scenario: Inputting a valid side size
Given I am on "/js-square"
When I fill in "side" with "6"
And I press "Calculate"
And I wait for the result to appear
And I wait a little
Then I should see "Perimeter (using js): 24 cm"
注:And I wait a little
は、SahiFirefoxウィンドウに表示されている内容を確認できるようにするために10秒待機するデバッグ手順です。
問題
周囲長を計算するjavascriptのスニペットは、6
Sahiによって入力されたものを取得できないようです。コードは次のとおりです([githubのファイルへのリンク](https://github.com/clemherreman/behatdemo/blob/master/website/views/js-square.twig#L27))
を持つ代わりに"Perimeter (using js): 24 cm"
、私はを取得し"Perimeter (using js): Error cm"
ます。
(function($) {
$('form').submit(function(e) {
e.preventDefault();
// #side is a <input type="text"> tag, where user input a square side length
var side = parseFloat(jQuery('#side').val()) || NaN;
var perimeter = side*4.0 || 'Error';
$('#sidebar').text('Perimeter (using js): '+perimeter+ ' cm');
});
})(jQuery);
デバッグ/アイデア
調査の結果、空の文字列が返されることが判明しましたjQuery('#side').val()
。そのため、境界ではなく「エラー」が表示されます。
シナリオ中にSahiが入力したものをJavascriptが取得できないようです。
私はこれにかなりこだわっています、私は何かが欠けているように感じます。
リンク:
- Githubプロジェクト(と
*.features
):https ://github.com/clemherreman/behatdemo - ライブウェブサイト:http://behatdemo.widop.com/js-square
バージョン:
- Behat:2.1.2
- ミンク:1.1.1
- サヒ:3.5
- PHP:5.3.6