Testen von ASP.NET 5 mit Entity Framework 7 mithilfe der Speicherdatenbank

asp.net-core entity-framework-core testing

Frage

Ich möchte den Context erhalten, den ich während des Testens in die Controller injiziere und die Daten in der "in memory" -Version des Datenbankkontextes modifiziere.

Also sieht der Controller so aus

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

Der Test sieht so aus

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

Ich würde lieben, irgendwie den Zusammenhang zu erhalten, bevor der Klient die Anfrage erhält und ändert, welche Daten vom Datenbankkontext zurückkommen werden.

Ich habe das Testprojekt in GitHub

Beliebte Antwort

Wenn Sie .NET Core als Targeting verwenden, können Sie keine automatischen Mocking-Frameworks verwenden.

Das Beste, was Sie tun können, ist, all Ihre Methoden in TestContext virtual zu machen und dann in Ihren TestContext erweitern.

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

Sie können dann verwenden

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

Sie können auch zusätzliche Informationen erfassen, die Sie in IntegrationTestContext möchten, und von Ihrem Test aus darauf zugreifen.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum