Gdy odpale pojedyczny test to wszystko dziala jak nalezy, ale gdy odpalam testy dla calej solucji (czy projektu) to wtedy niektore testy rzucaja
Message: System.InvalidOperationException : Mapper already initialized. You must call Initialize once per application domain/process.
oczywiscie rozumiem bład, ale chcialbym rozwiazac go w jakis cywylizowany sposob, a takich pomyslow mi brak
kombinowalem na rozne sposoby
- Inicjalizowalem automappera zgodnie z dokumentacja (stworzenie Fixture dla kazdego obiektu)
public class MapperFixture
{
public MapperFixture()
{
Mapper.Initialize(cfg =>
{
cfg.AddProfile<PackageProfile>();
});
}
}
public class TestPackageProfile : IClassFixture<MapperFixture>
{
public TestPackageProfile(MapperFixture mapperFixture)
{
}
- stworzenie Shared Fixture (do wszystkich testow uzywalem tego samego fixture)
- dodanie flagi
wasinitialized
i stworzenie MapperInitializer który jest statycznym obiektem i jest wywolywany w normalnie jako funkcja - zgodnie z dokumentacja automappera napisalem cos takiego
public class MapperInitialize
{
public void Initialize()
{
lock(this)
{
Mapper.Reset();
Mapper.Initialize(cfg =>
{
cfg.AddProfile<PackageProfile>();
});
Mapper.Configuration.CompileMappings();
}
}
}
zadne z 4 sposobow nie dziala, moze cos po drodze skopalem implementujac, ale nie widze zadnego bledu