graphql-dotnetを使用している小さなGraphQLサーバーの統合テストを作成しようとしています。 Webアプリケーションを使用すると、サーバーは正常に動作しています。AspNetCore.TestHostとEntityFrameworkCore.InMemoryのデータを失う
統合テストを実行するには、Microsoft.AspNetCore.TestHostを使用してサーバーを構成し、POST要求を送信しようとしています。また、私はMicrosoft.EntityFrameworkCore.InMemoryを使用して、ローカルで実行されている「実際の」データベースではなく、メモリ内のデータベースを使用しようとしています。私はSaveChangesメソッドを呼び出した後にデータベースの内容をプリントアウトしてきました
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDbContext<MyDbContext>(options =>
options.UseInMemoryDatabase()
);
...
}
public void Configure(
IApplicationBuilder app,
IHostingEnvironment env,
MyDbContext myDbContext)
{
myDbContext.Categories.Add(new Category {Id = 1, Name = "Category 1" });
myDbContext.SaveChanges();
app.UseMvc();
}
()と:
は、私は、インメモリ・データベースを設定し、単一のレコードを保存しようとTestStartUp.csファイルを持っていますオブジェクトが保存されていることを確認しました。しかし、リポジトリオブジェクトが注入されたMyDbContextオブジェクトのすべてのカテゴリを取得しようとすると、カテゴリが存在しないことが示されます。
私はさまざまな構成を無駄にしようとしました。メモリにないデータベースを使用するとうまくいくので、私には紛失しているものがあります。私は怒っているので、どんな援助も非常に感謝しています!
はあなたのセットアップインメモリ・データベースおよび個別にすべてのテストのためのテストホストをしましたか? IMOこれが唯一の方法です。すべてのテストホストに対して新しい空のインメモリDBが得られるからです。私はこの問題を避けるために、すべてのテストでテストホストを共有しません。テストを分離したままにしておきます。 –
問題はStartup.csが別のサービスプロバイダを作成していることが原因であることが判明しました。一度それがきれいにされたものは期待どおりに働いた。ありがとう! – Blather