使用內存數據庫在Entity Framework 7中測試ASP.NET 5

asp.net-core entity-framework-core testing

我希望得到我在測試期間注入控制器的Context並修改數據庫上下文的“in memory”版本中的數據。

所以控制器看起來像這樣

[Route("api/[controller]")]
public class TestController : Controller
{
    private readonly TestContext _testContext;
    public TestController(TestContext testContext)
    {
        _testContext = testContext;
    }

    [HttpGet]
    public IActionResult Get()
    {
        return Ok(new { _testContext.Users });
    }
}

測試看起來像這樣

[Route("api/[controller]")]
public class TestController : Controller
{
    private readonly TestContext _testContext;
    public TestController(TestContext testContext)
    {
        _testContext = testContext;
    }

    [HttpGet]
    public IActionResult Get()
    {
        return Ok(new { _testContext.Users });
    }
}

我希望在客戶端獲取請求之前以某種方式獲取上下文,並修改將從數據庫上下文返回的數據。

我在GitHub有測試項目

熱門答案

如果您的目標是.NET Core,則無法使用任何自動模擬框架。

您可以做的最好的事情是使TestContext所有方法都是虛擬的,然後在單元測試中擴展它。

public class IntegrationTestContext : TestContext
{
    // override methods here
}

然後你可以使用

public class IntegrationTestContext : TestContext
{
    // override methods here
}

您還可以在IntegrationTestContext捕獲所需的任何額外信息,並從測試中訪問它。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因