| Pacote | Versão | Downloads |
|---|---|---|
| Moq | ||
| FakeItEasy | ||
| Manual |
Read this in other language: English
Lib para trocar implementações injetadas via DI em tempo de execução nos testes integrados
> dotnet add package Lambda3.DotNet.Core.Runtime.Faker.Moq
> dotnet add package Lambda3.DotNet.Core.Runtime.Faker.FakeItEasy
> dotnet add package Lambda3.DotNet.Core.Runtime.Faker
Através do FakeItEasy
- Lib DotNet.Core.Runtime.Faker.FakeItEasy
- Registrar o faker
var registeredValue = new DateTime();
var factory = new WebApplicationFactory<Program>().WithWebHostBuilder(builder =>
builder.ConfigureTestServices(services =>
{
services.AddServiceWithFaker<Clock>(faker => A.CallTo(() => faker.Now()).Returns(registeredValue));
}));
var serviceProvider = factory.Services;- Mudar implementação
serviceProvider.Change<Clock>(faker => A.CallTo(() => faker.Now()).Returns(new DateTime()));- Receber novo valor
serviceProvider.GetService<Clock>().Now();Deve retornar valor informado no change =)
- Limpar implementação para não influenciar em outros testes
serviceProvider.ResetAllChanges();Através do Moq
- Lib DotNet.Core.Runtime.Faker.Moq
Muito parecido com o FakeItEasy, mas com a sintaxe do moq
factory = new WebApplicationFactory<Program>().WithWebHostBuilder(builder =>
builder.ConfigureTestServices(services =>
{
services.AddServiceWithFaker<Clock>(mock => mock.Setup(x => x.Now()).Returns(registeredValue));
}));e
serviceProvider.Change<Clock>(mock => mock.Setup(x => x.Now()).Returns(new DateTime()));- Lib DotNet.Core.Runtime.Faker
Muito parecido com os anteriores, mas sem dependências das libs
factory = new WebApplicationFactory<Program>().WithWebHostBuilder(builder =>
builder.ConfigureTestServices(services =>
{
services.AddServiceWithFaker<Clock>(() => new FakeClock());
}));e
serviceProvider.Change<Clock>(() => new FakeClock());Exemplos completos: