Loading…
Loading…
6 карточек
What is the AAA (Arrange-Act-Assert) pattern in unit tests?
нажми, чтобы перевернуть
Arrange: create SUT (System Under Test), mocks, test data. Act: one call to the tested method. Assert: verify result, state, mock invocations. Naming: MethodName_Scenario_ExpectedBehavior. One logical Assert (may include multiple Assert calls for one result). Don't test implementation details — test behavior.
// Method_Scenario_Expected
[Fact]
public async Task GetUser_ExistingId_ReturnsUser()
{
// Arrange
var repo = new Mock<IUserRepository>();
repo.Setup(r => r.FindAsync(1))
.ReturnsAsync(new User { Id = 1, Name = "Alice" });
var service = new UserService(repo.Object);
// Act
var result = await service.GetUserAsync(1);
// Assert
Assert.NotNull(result);
Assert.Equal("Alice", result.Name);
}
[Fact]
public async Task GetUser_NonExistentId_ReturnsNull()
{
// Arrange
var repo = new Mock<IUserRepository>();
repo.Setup(r => r.FindAsync(99)).ReturnsAsync((User?)null);
var service = new UserService(repo.Object);
// Act
var result = await service.GetUserAsync(99);
// Assert
Assert.Null(result);
}Когда да
All unit tests. Integration tests too, but Arrange may be larger
Совет на собеседовании
One test — one scenario. Don't combine happy path and error path in a single test.
Свайп вправо — знаю, влево — не знаю
