Probando ASP.NET 5 con Entity Framework 7 usando en la base de datos de memoria

asp.net-core entity-framework-core testing

Pregunta

Estoy deseando conocer el Contexto que estoy inyectando en los controladores durante las pruebas y modificar los datos en la versión "en memoria" del contexto de la base de datos.

Así el controlador se ve así

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

La prueba se ve así.

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

Me encantaría obtener de alguna manera el contexto antes de que el cliente reciba la solicitud y modifique qué datos regresarán del contexto de la base de datos.

Tengo el proyecto de prueba en GitHub.

Respuesta popular

Si apuntas a .NET Core, no podrás hacer uso de ningún marco de simulacros automático.

Lo mejor que puedes hacer es hacer que todos tus métodos en TestContext virtuales, luego TestContext en tus pruebas unitarias.

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

A continuación, puede utilizar

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

También puede capturar cualquier información adicional que desee en IntegrationTestContext y acceder a ella desde su prueba.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué