저는 나를위한 속성을 만들 일부 도우미를 작성하여 EF를 단위 테스트에 쉽게 적용하려고합니다. 나는 백업 필드일반 반환 유형이있는 유형 전환
private Mock<DbSet<Workflow>> mockedWorkFlows;
private Mock<DbSet<WorkflowError>> mockedWorkFlowErrors;
의 몇 가지있다 그리고 나는 일반적인 기능은 다음과 같은 기능을 나에게 올바른 백업 필드를 반환 할 수 있도록하려면
public Mock<DbSet<T>> Mocked<T>(T t) where T : class
{
if ((object)t is Workflow)
{
return mockedWorkFlows; //cannot Workflow to T
}
}
내가 원하는 여러 개인 백업 필드가 있습니다 전달 된 유형을 기반으로 리턴됩니다.
그러나 클래스 제약 조건 인 Workflow
을 추가하더라도 동일한 오류가 발생합니다.
나는 또한 t's
유형을 켜 봤지만 거기에는 행운이 없었습니다. 여러 백업 필드의 유형은 객체가 아닌 공통 조상을 공유하지 않습니다. 내가 할 수있는 일이 가능한거야?
이 방법의 요점은 무엇인지 알지 못합니다. 가짜를 만드는 것은 1 줄의 코드를 필요로합니다. 가짜를 설정하고 싶다면 모든 가짜를 개별적으로 설정해야합니다. 따라서 특정 유형의 가짜에 대한 팩토리를 만들면 어떨까요? – FCin
EF 컨텍스트에서 IDbSet을 조롱하는 것은 한 줄 이상의 코드입니다. 데이터 할당을위한 유창한 인터페이스를 가지고 있지만 실제로 스파이로 불려지므로 백업 필드를 어딘가에 노출해야합니다. 난 단지 Context의 모든 IDbSet 속성에 대해 WorkflowsMocked, WorkflowErrorsMocked 등을 갖는 대신에 더 작은 API를 원한다. –
wootscootinboogie
'DbSet'을 조롱하는 대신에, 예를 들어, Effort 프레임 워크를 사용하여'SqlConnection'을 조롱하는 것을 고려해 보셨습니까? https://github.com/tamasflamich/effort –