後でネットコアへの.NETから、Microsoftは進化で、.NETのコア周波数の一つまたは二つの大きなバージョンに毎年非常に懸命に働いた、昨年リリースした.NETコア2.1および2.1は、長期でサポートされているバージョンである2.2、高速連続一方で、更新がすぐに不足しているAPIの比較の.NET Frameworkを補うために、それはまた、多くのAPIで、その結果、急激な変化の多くをもたらし、特に新しいAPIのより伝統的なフレームワークに比べては、調整していき、上のいくつかのAPIバージョンはまた、次のバージョンが2.1にアップグレードされませんサポートするために、結果を使用することができ、Microsoftが構成を使用することの難しさを減らし、パッケージ名統合テストサーバーを変更し、より高いレベルのパッケージの2.0インターフェイスを変更しますしかし、これを書いVisualStudioのツールのサポートのようまだ非常に良いではありません、ファイルを手動で変更する必要がcsproj。しかし、この作品もワンオフです。[OK]を友達に良い設定。
私たちは実際にテストで使用される最もHttpClientをオブジェクトである、それは変わりません、ちょうど変更TESTSERVERの道を作成し、一部の同志は、インターフェイスの変更を学習する前に、物事の多くは白い盲目で、それは真実ではないことを心配かもしれこちらを参照してください。 。
.NETメモリ集積テストサーバーを構築する方法を、次の下部コア2.1をご紹介します。
まず、私たちは以前のように作成するには、この新しく作成されたMVCプロジェクトを参照し、新しい.NETコアMVC 2.1プロジェクトを作成し、xUnitのユニットテストプロジェクトを作成します、ここではそれらを繰り返すありません。
次の二つのパッケージをダウンロード:Microsoft.AspNetCore.App和Microsoft.AspNetCore.Mvc.Testing
私たちは、という名前のファイルを作成netcoremvc21
、次のようにそのコードは、テストクラスを
public class netcoremvc21: IClassFixture<WebApplicationFactory<CoreMvc21.Startup>>
{
//private readonly WebApplicationFactory<CoreMvc21.Startup> _factory;
private HttpClient client;
public netcoremvc21(WebApplicationFactory<CoreMvc21.Startup> factory)
{
this.client = factory.CreateClient();
}
[Fact]
public async Task GetTest()
{
var response = await client.GetAsync("/Home/Hello");
response.EnsureSuccessStatusCode();
var responseStr = await response.Content.ReadAsStringAsync();
Assert.Equal("Hello,world", responseStr);
}
}
}
それは一般的なパラメータであり、内部の私たちのプロジェクトはIClassFixture汎用的なインタフェースを実現するために作成された、我々はインターフェイスの役割の前にこのことについて話しました、ここではそれらを繰り返すないWebApplicationFactory
マイクロソフトが良好であることを一般的なオブジェクトは、私たちが所有する必要はありません。作成し、このパラメータは(ここでは、我々が提供CoreMvc21と呼ばれるこのプロジェクトでは、MVCプロジェクトのスタートアップファイルである)実際には、指定したプログラムの起動ファイル、汎用オブジェクトTEntryPointオブジェクトである。それはへのメモリテストサーバアプローチを作成するために実際にありますコンストラクタ非深刻なパフォーマンスの問題で管理されていないオブジェクトを作成するとのxUnitが慣れていない場合は、当社の以前のパッケージに似ラップ、手で書かれたコードの量を削減し、ベストプラクティスを提供し、我々は、先に述べました。
テストコードとの間および前記下は大きな違いは、オブジェクトがHTTPClientの構成によって要求されません。
テストインターフェースデータは問題ありません、私たちはこれを見てはContentRootに設定されていない、プログラムが正しくページを見つけることができません
次のようにテストコード
[Fact]
public async Task GetTest()
{
var response = await client.GetAsync("/Home/index");
response.EnsureSuccessStatusCode();
var responseStr = await response.Content.ReadAsStringAsync();
Assert.Contains("myCarousel", responseStr);
}
テスト上記のコードであることを、私たちは、基本的な機能は正常に動作することができます余分な設定を必要としない、渡された。現在の前提は、プロジェクトの通常走行を上回っていることは従来通りに構成され、プロジェクトのリソースファイルではなく、同じディレクトリにある場合次の、より多くのそれがうまくいかない、我々は継承することができWebApplicationFactory<TEntryPoint>
、かつ2.0フロント.NETのコア構成は、設定をカスタマイズすることが基本的に同様です。
いくつかの同僚は、作業環境が設定されていない疑い、であってもよく、それは開発環境ではない、答えはイエス。
時間を掲示すると、.NETコア理由は、忙しい仕事の3.0プレビュー7に達している新技術や新しいフレームワークと組み合わせる以前のように情熱的ではありません、私は3.0を超える.NETのコアを試していない。方法はのみに適用されます(バージョン2.0で利用可能ではない、また、記載されている統合この一連の試験について、バージョン2.0、興味の友人がそれを読むことができる)は、2つのバージョンの.NETコア2.1と2.2。