私は受け入れベースのテストを研究してきましたが、機能ベースの開発により自然に適合するため、非常に見栄えがします。
問題は、それらをコードでレイアウトする方法がわからないことです。これを処理するために別のフレームワークを使用しないようにしたいので、これらのテストを起動して実行するための簡単な方法を探しています。
コード構造に必要な変更は何でも受け付けています。また、仕様を使用して複雑な受け入れ基準を構築しています。
私がやろうとしていることのサンプル:
public class When_a_get_request_is_created
{
private readonly IHttpRequest _request;
public When_a_get_request_is_created()
{
_request = new HttpRequest();
}
// How to call this?
public void Given_the_method_assigned_is_get()
{
_request = _request.AsGet();
}
// What about this?
public void Given_the_method_assigned_is_not_get()
{
_request = _request.AsPost();
}
// It would be great to test different assumptions.
public void Assuming_default_headers_have_been_added()
{
_request = _request.WithDefaultHeaders();
}
[Fact]
public void It_Should_Satisfy_RequestIsGetSpec()
{
Assert.True(new RequestUsesGetMethodSpec().IsSatisfiedBy(_request));
}
}
私はここでは完全にマークから外れているかもしれませんが、基本的には、さまざまな仮定と与えられた条件でテストを実行できるようにしたいと思います。与えられた基準を検証するために誰かにテストを指示できる限り、クラスを増やしたり、マイナーな複製を作成したりする必要があるかどうかは気になりません。