これはあなたの問題の非常に技術的な定義のように読めます、確かにあなたのビジネス部門の誰かとの会話から生じたものではありません。例による仕様スタイルを使用して単体テストを実行することを止めるものは何もありませんが、それは実際にはそれが設計されているものではありません。ガーキンは問題空間の自然言語表現であると考えられており、英語と同じように、ドットコム企業の例ではユーザーよりもコロンが少ないなど、より正確な定義に苦労していることがわかります。
バインディング定義を変更して、もう少しリラックスさせることができます
使用する代わりに
[Given("I have sent (.*)")]
public void IHaveSent(string line)
{
DoSomethingWith(line);
}
試す
[Given("I have sent mail from (.*)")]
public void IHaveSentMailFrom(string email)
{
DoSomethingWith(string.Format("MAIL FROM:<{0}>");
}
だからそれはもっと
Given I have sent mail from user@example.com
ただし、例をより完全に定義すると、はるかに大きなメリットが得られます。user@example.comの代わりに、彼をビルと呼び、ビルがやろうとしていることを(ガーキンの外で)定義しましょう。たとえば、ビルは有効なシナリオを実行しようとしている可能性がありますが、テッドは私が偽のシナリオを試行している可能性があります。
Given I have an email from Bill
When I get a receipt
Then it should be valid
Given I have an email from Ted
When I get a receipt
Then it should be bogus