私は、ASP.NET 5 MVC6 ApiでEF7を使用して統合テストを行っています。既に実装されているIdentityに付属のデフォルトプロジェクトを使用しています。ここで 統合テストASP.NET 5 ID
は私のコントローラでテストしようとしているアクションイムである私は、インメモリデータベースを作成し、その反対の統合テストを行う私のテストプロジェクトで[Authorize]
[HttpGet("api/children")]
public JsonResult GetAllChildren()
{
var children = _repository.GetAllChildren(User.GetUserId());
var childrenViewModel = Mapper.Map<List<ChildViewModel>>(children);
return Json(childrenViewModel);
}
(ログインしているユーザーのためにすべての子を取得します)ここで
は、私は統合テスト
public class IntegrationTestBase
{
public TestServer TestServer;
public IntegrationTestBase()
{
TestServer = new TestServer(TestServer.CreateBuilder().UseStartup<TestStartup>());
}
}
に使用するベースであり、ここで私はSQLServerのを追加するメソッドをオーバーライドしてTestStartup(ありますインメモリ・テスト・データベースを追加します1)
public class TestStartup : Startup
{
public TestStartup(IHostingEnvironment env) : base(env)
{
}
public override void AddSqlServer(IServiceCollection services)
{
services.AddEntityFramework()
.AddInMemoryDatabase()
.AddDbContext<ApplicationDbContext>(options => {
options.UseInMemoryDatabase();
});
}
}
と行動のためのテストと
public class ChildTests : IntegrationTestBase
{
[Fact]
public async Task GetAllChildren_Test()
{
//TODO Set Current Principal??
var result = await TestServer.CreateClient().GetAsync("/api/children");
result.IsSuccessStatusCode.Should().BeTrue();
var body = await result.Content.ReadAsStringAsync();
body.Should().NotBeNull();
//TODO more asserts
}
}
誰もが潜在的にCurrentPrincipalまたは取得するための他の方法を設定する方法については正しい方向に私を指すことができます私の統合テストは機能していますか?
んでしたあなたはあなたの問題を解決しますか? –