6
我試圖讓我的ASP.NET 5 MVC6 API使用EF7進行集成測試。我正在使用Identity已經實現的默認項目。集成測試ASP.NET 5身份
這裏是動作我嘗試在我的控制器測試(得到所有的孩子登錄的用戶)
[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>());
}
}
這裏是TestStartup(其中i覆蓋,增加了SQLServer的方法一個是增加了inmemory測試數據庫)
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或一些其他的方式來獲得正確的方向我的集成測試工作?
難道你解決了你的問題? –