Skip to content

Error unitary testing #1

@Pakoke

Description

@Pakoke

Hi

I'm implementing a repository.When I try to test it unitary, I receive the next error.

System.NotImplementedException: 'The member 'IEnumerable.GetEnumerator' has not been implemented on type 'FakeSet1' which inherits from 'DbSet1'. Test doubles for 'DbSet`1' must provide implementations of methods and properties that are used.'

Did you ever have this type of error, when you try to get the entities?

I've using several classes from the base test and double test.

My code is:

[TestMethod]
public void GetAllCompetitions_Test()
{
IInterceptorsResolver resolver = GetEmptyInterceptors();
IDbContextFactory factory = GetFactory();

        IRepository repository = GetTarget(factory, resolver);

        IEnumerable<CompetitionDto> actual = repository.GetEntities<CompetitionDto>().ToList();

        CompetitionDto expected = new CompetitionDto { Id = 424 };
        Assert.AreEqual(expected, actual.FirstOrDefault());
        Assert.AreEqual(1, actual.Count());

    }

    private static IInterceptorsResolver GetEmptyInterceptors()
    {
        Mock<IInterceptorsResolver> resolver = new Mock<IInterceptorsResolver>();
        resolver.Setup(x => x.GetEntityInterceptors(It.IsAny<Type>()))
                .Returns(new IEntityInterceptor[0]);
        resolver.Setup(x => x.GetGlobalInterceptors())
                .Returns(new IEntityInterceptor[0]);
        return resolver.Object;
    }

    private static IDbContextFactory GetFactory()
    {
        DbContextFakeWrapper wrapper = new DbContextFakeWrapper();

        List<CompetitionDto> competitions = new List<CompetitionDto>()
        {
            new CompetitionDto()
            {
                Id = 424,
                Caption = "European Championships France 2016",
                Short_Caption = "European Championships France",
                League = "EC",
                Year = 2016,
                NumberOfTeams = 24,
                NumberOfGames = 38,
                LastUpdate = DateTime.UtcNow
            }
        };

        DbSet<CompetitionDto> userSet = competitions.MockDbSet(wrapper);
        wrapper.ContextDouble.Setup(x => x.Set<CompetitionDto>()).Returns(() => userSet);
        
        DbContextFakeWrapper fakeWrapper = wrapper;
        return fakeWrapper.ContextDouble.BuildFactoryStub();
    }

    private static IInterceptorsResolver GetResolver(Expression<Func<IInterceptorsResolver, IEnumerable<IEntityInterceptor>>> getInterceptorsFunction,
        InterceptorDouble interceptorMock)
    {
        Mock<IInterceptorsResolver> stub = new Mock<IInterceptorsResolver>();
        stub.Setup(getInterceptorsFunction).Returns(new[] { interceptorMock });
        return stub.Object;
    }

    protected IRepository GetTarget(IDbContextFactory factory, IInterceptorsResolver resolver)
    {
        return new Repository(factory, resolver);
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions