示例
1、安装AutoFixture
NuGet\Install-Package AutoFixture -Version 5.0.0-preview0011
2、准备Fixture对象
private readonly IFixture _fixture;
//constructor
public PersonsServiceTest(ITestOutputHelper testOutputHelper)
{
var countriesInitialData = new List<Country>() { };
var personsInitialData = new List<Person>() { };
DbContextMock<ApplicationDbContext> dbContextMock =
new DbContextMock<ApplicationDbContext>(new DbContextOptionsBuilder<ApplicationDbContext>().Options);
ApplicationDbContext dbContext = dbContextMock.Object;
dbContextMock.CreateDbSetMock(c => c.Countries, countriesInitialData);
dbContextMock.CreateDbSetMock(p => p.Persons, personsInitialData);
_countriesService = new CountriesService(dbContext);
_personService = new PersonsService(dbContext, _countriesService);
_testOutputHelper = testOutputHelper;
_fixture = new Fixture();
}
3、使用
[Fact]
public async Task AddPerson_ProperPersonDetails()
{
//Arrange
//PersonAddRequest? personAddRequest = _fixture.Create<PersonAddRequest>();
PersonAddRequest personAddRequest = _fixture.Build<PersonAddRequest>()
.With(p => p.Email, "person@example.com").Create();
//Act
PersonResponse personResponse = await _personService.AddPerson(personAddRequest);
List<PersonResponse> personResponses = await _personService.GetAllPersons();
//Assert
Assert.True(personResponse.PersonId != Guid.Empty);
Assert.Contains(personResponse, personResponses);
}
Gitee获取源码: