Sobes.tech
Back to questions
Junior — Middle
65

Есть ли у вас опыт создания и выполнения интеграционных тестов для программных систем?

Companies where asked
Югория

Answer from AI

sobes.tech AI

Да, у меня есть опыт создания и выполнения интеграционных тестов в C#. Обычно для этого я использую фреймворки, такие как NUnit или xUnit, вместе с библиотеками для мокирования (например, Moq) и инструментами для поднятия тестовой среды (например, Docker или встроенные тестовые серверы).

Интеграционные тесты проверяют взаимодействие нескольких компонентов системы, например, работу контроллера с базой данных и сервисами. Пример простого интеграционного теста с использованием xUnit и Entity Framework Core InMemory:

public class UserServiceIntegrationTests
{
    private readonly UserService _userService;
    private readonly DbContextOptions<AppDbContext> _options;

    public UserServiceIntegrationTests()
    {
        _options = new DbContextOptionsBuilder<AppDbContext>()
            .UseInMemoryDatabase(databaseName: "TestDb")
            .Options;

        var context = new AppDbContext(_options);
        _userService = new UserService(context);
    }

    [Fact]
    public void AddUser_ShouldAddUserToDatabase()
    {
        var user = new User { Id = 1, Name = "Test User" };
        _userService.AddUser(user);

        using var context = new AppDbContext(_options);
        var addedUser = context.Users.Find(1);
        Assert.NotNull(addedUser);
        Assert.Equal("Test User", addedUser.Name);
    }
}

Такой тест проверяет, что сервис корректно взаимодействует с базой данных, что выходит за рамки юнит-тестирования и приближено к реальной работе приложения.