Sobes.tech
Junior — Middle

Оё таҷрибаи эҷод ва иҷрои тестҳои интегратсионӣ барои системҳои нармафзории доред?

sobes.tech AI

Ҷавоб аз 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);
    }
}

Ин тест санҷида мебарорад, ки хизмат дуруст бо базаи додаҳо кор мекунад, ки аз тестҳои ягона фарқ мекунад ва ба кори воқеии барнома наздиктар мешавад.