Test de ASP.NET 5 avec Entity Framework 7 à l'aide d'une base de données in memory

asp.net-core entity-framework-core testing

Question

Je souhaite connaître le contexte que j'injecte dans les contrôleurs lors des tests et modifier les données dans la version "en mémoire" du contexte de la base de données.

Donc, le contrôleur ressemble à ceci

[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 });
    }
}

Le test ressemble à ceci

[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 });
    }
}

J'aimerais bien connaître le contexte avant que le client reçoive la demande et modifier les données qui reviendront du contexte de la base de données.

J'ai le projet de test dans GitHub

Réponse populaire

Si vous ciblez .NET Core, vous ne pourrez utiliser aucun framework de moquage automatique.

Le mieux que vous puissiez faire est de rendre toutes vos méthodes virtuelles dans TestContext , puis de les étendre dans vos tests unitaires.

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

Vous pouvez alors utiliser

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

Vous pouvez également capturer toute information supplémentaire que vous souhaitez dans IntegrationTestContext et y accéder depuis votre test.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi