簡単な答えは、そうすべきではないということです。
きゅうりのテストは、ユーザー向けで読みやすいものになっています。それらは機能を説明します。エラー出力がバイトごとに既知の値のバイトと一致するかどうかは、ユーザーは気にしません。
あなたは自分自身に尋ねる必要があります:私は何をテストしていますか?答えはエラーメッセージですか?おそらくそうではありません。アプリケーションのいくつかの機能をテストしています。本当に失敗することを確認したいのであれば、Cucumberシナリオで必要なのは次の行です。
Then the exit status should not be 0
これは、スクリプトがゼロ以外の終了ステータスがエラーを通知するという標準の規則に従っていることを前提としています。
シナリオで出力に特定のメッセージを含める必要がある場合は、次のメッセージを追加できます。
Then it should fail with
"""
Some error message
"""
ただし、これは出力全体である必要はなく、部分的に一致するだけです。(arubaには「正確に失敗するはずです:」と定義されていることに注意してください。ただし、これを使用することはお勧めしません。)
編集:あなたはあなたの例を失敗ではなく合格をテストするように変更しましたが、私の基本的なアドバイスは同じです:
- 出力の詳細をシナリオのロジックから分離します。コメントの例を使用して、ユーザーが生成した単一のコメントを出力できることを確認するテストと、正しい100個のコメントを出力したことを確認する別のテストがある場合は、100個である必要はありません。キュウリのシナリオでのコメントの価値のある出力。
- ユーザーの視点からキュウリのシナリオを作成してください。各シナリオでは、ユーザーにとって重要な何かをテストする必要があります。ユーザーが気にしないときに実装から漏れるものをすべて削除して、それらを最小限に抑えるようにしてください。
- これを実現するには、部分一致をテストする組み込みのArubaコンストラクトを使用します。出力でキーワードまたはフレーズを探します。Cucumberテストは読みやすくなるだけでなく、より堅牢になり、関連のない出力変更の影響を受けなくなります。