私はテストで働く命令コードのセットを持っています。私はそれを必須のテスト規約に煮詰めようとしています。はApiControllersのための規約を作成する必要があります
私のテストは、次のようになります。私も、これはすなわち非null値をデフォルトにHttpConfiguration
とHttpRequestMessage
を設定することにより、動作することができますカスタマイズを持って
[Theory, BasicConventions]
public void GetVersionOnSiteVersionControllerReturnsASiteVersion(IFixture fixture)
{
fixture.OmitAutoProperties = true;
SiteVersion expected = fixture.Create<SiteVersion>();
SiteVersion actual = null;
var sut = fixture.Create<SiteVersionController>();
var response = sut
.GetSiteVersion()
.ExecuteAsync(new CancellationToken())
.Result
.TryGetContentValue<SiteVersion>(out actual);
actual.AsSource().OfLikeness<SiteVersion>().ShouldEqual(expected);
}
。
public class ApiControllerCustomization : ICustomization
{
public void Customize(IFixture fixture)
{
var origin = fixture.OmitAutoProperties;
fixture.OmitAutoProperties = true;
var sut = fixture.Create<SiteVersionController>();
sut.Configuration = fixture.Create<HttpConfiguration>();
sut.Request = fixture.Create<HttpRequestMessage>();
fixture.Inject<SiteVersionController>(sut);
fixture.OmitAutoProperties = origin;
}
}
まず、これは醜いが、私は<を構築し使用する場合は、>()。(省略)。(設定).with(リクエスト)と、それはそれらのインスタンスを構築するために必要automoqのカスタマイズを遮断。
第2に、これはSiteVersionControllerでのみ機能します。私はむしろすべての私のApiControllers(これは悪い考えですが、私は試してみるまでわからない)のためにこれを一般化するだろう。すべてApiControllersため を、自動プロパティなしでそれらを作成するが、非null値
どのような 'ApiController'タイプで作業していますか? ASP.NET Web API?どのバージョン? –
私のNuGetパッケージマネージャーは、ASP.NET Web APIバージョン5.0.0と答えています。 – cocogorilla
関連:http://stackoverflow.com/q/19908385/126014 –