2

Yii フレームワークで Behat を使用して、非常に奇妙な動作を観察しています。

Then I should see "some text"

正常に検出されるテキストもありますが、そうでないテキストもあります。自分がいると思うページにいることを確認するために、ビュー ファイルに一種のマーカーを追加し、Behat がそれらを認識できるようにしました。

というわけで、シナリオは

  Scenario: editing journal
    Given the following journals are present:
        | name          | link                      | description           |
        | Murzilka      | http://www.murz.com       | advanced child journal| 
        | Nature        | www nature com            | nice journal          |
    When I am on edit page for journal "Nature"
    Then I should see "Update Nature"
    Then I should see "nice journal"
    Then I should see "1qazxsw2" <-- a marker
    Then I should see "2wsxcde3" <-- a marker
    Then I should see "www nature com"

出力は次のとおりです。

 Scenario: editing journal
   # features\journal.feature:21
Given the following journals are present:
   # FeatureContext::theFollowingJournalsArePresent()
  | name     | link                | description            |
  | Murzilka | http://www.murz.com | advanced child journal |
  | Nature   | www nature com      | nice journal           |
When I am on edit page for journal "Nature"
   # FeatureContext::iAmOnEditPageForJournal()
Then I should see "Update Nature"
   # FeatureContext::assertPageContainsText()
Then I should see "nice journal"
   # FeatureContext::assertPageContainsText()
Then I should see "1qazxsw2"
   # FeatureContext::assertPageContainsText()
Then I should see "2wsxcde3"
   # FeatureContext::assertPageContainsText()
Then I should see "www nature com"
   # FeatureContext::assertPageContainsText()
  The text "www nature com" was not found anywhere in the text of the current page.

奇妙なことに、(テスト環境で) ページにアクセスすると、「www nature com」を含むすべてのフレーズが表示されます。

4

1 に答える 1

2

この問題は、ステップ「それなら…を見るべきだ」が入力フィールドのテキストを参照しているときに散発的に発生します。この目的のために、事前定義されたステップがあることがわかりました

Then /^the "(?P<field>(?:[^"]|\\")*)" field should contain "(?P<value>(?:[^"]|\\")*)"$/
    - Checks, that form field with specified id|name|label|value has specified value.
    # FeatureContext::assertFieldContains()

これは次のように使用することになっています:

Then the "journal[name]" field should contain "nice journal"

この変更により、Behat はすべてのフレーズを検索します。

于 2013-09-23T11:32:42.230 に答える