메모리 데이터베이스를 사용하여 ASP.NET 5에서 Entity Framework 7 테스트

asp.net-core entity-framework-core testing

문제

나는 콘트롤을 콘트롤러에 삽입하고 데이터베이스 컨텍스트의 "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 코어를 목표로한다면, 자동 mocking 프레임 워크를 사용할 수 없습니다.

당신이 할 수있는 최선의 방법은 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는 합법적입니까? 예, 이유를 알아보십시오.