Ich versuche Integrationstests für meine ASP.NET 5 MVC6 API mit EF7 zu bekommen. Ich verwende das Standardprojekt, das mit Identity bereits implementiert ist.Integrationstests ASP.NET 5 Identity
Hier ist die Aktion im Versuch, in meinem Controller zu testen (wird alle Kinder für die angemeldeten Benutzer)
[Authorize]
[HttpGet("api/children")]
public JsonResult GetAllChildren()
{
var children = _repository.GetAllChildren(User.GetUserId());
var childrenViewModel = Mapper.Map<List<ChildViewModel>>(children);
return Json(childrenViewModel);
}
In meinem Testprojekt erstelle ich eine inmemory Datenbank und führen Sie dann die Integrationstests gegen die hier
ist die Base I für die Integration verwenden Tests
public class IntegrationTestBase
{
public TestServer TestServer;
public IntegrationTestBase()
{
TestServer = new TestServer(TestServer.CreateBuilder().UseStartup<TestStartup>());
}
}
Und hier ist die TestStartup (wobei i die Methode überschreiben, die SQLServer fügt mit einem, der die inmemory Testdatenbank)
public class TestStartup : Startup
{
public TestStartup(IHostingEnvironment env) : base(env)
{
}
public override void AddSqlServer(IServiceCollection services)
{
services.AddEntityFramework()
.AddInMemoryDatabase()
.AddDbContext<ApplicationDbContext>(options => {
options.UseInMemoryDatabase();
});
}
}
und der Test für die Aktion
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
}
}
fügt
mir jemand Kann in die richtige Richtung weisen, wie die Current oder eine andere Art und Weise, um potenziell gesetzt zu bekommen meine Integrationstests funktionieren?
Did Sie lösen Ihr Problem? –